什么是面向对象程序设计?

我们称为OOP(Object  Oriented  Programming)

就是非结构化的程序设计

要使用类和对象的方法来进行编程

什么是类,什么是对象

类就是封装了属性和行为的一段程序,实现特定的功能。行为就是指方法,就是函数。什么是属性,就是自定义的字段,也就是定义的变量。

什么对象?

对象就是类的实例。

什么是封装?

隐藏属性实现细节,对外提供访问方式。即私有化属性,公有化提供属性的方法。

封装的作用?

避免直接访问属性造成出错或不确定性。

package com.swift;

public class Person {
public int id;
public String name;
public int age;
public String city;
public String introduce() {
return "My id=" + id + ", name=" + name + ", age=" + age + ", city=" + city ;
}
}
package com.swift;

public class DemoPerson {

    public static void main(String[] args) {
// TODO Auto-generated method stub
Person p1=new Person();
Person p2=new Person();
Person p3=new Person();
Person p4=new Person();
p1.id=110001;
p1.name="刘备";
p1.age=43;
p1.city="蜀国";
p2.id=110002;
p2.name="关羽";
p2.age=35;
p2.city="蜀国";
p3.id=110003;
p3.name="张飞";
p3.age=32;
p3.city="蜀国";
p4.id=110004;
p4.name="诸葛亮";
p4.age=25;
p4.city="蜀国";
System.out.println(p1.introduce());
System.out.println(p2.introduce());
System.out.println(p3.introduce());
System.out.println(p4.introduce()); } }

构造方法的使用

什么是构造方法,和类的名字完全一致的方法称为构造方法,作用是对象的初始化

    //构造方法
public Person() { }
//有参数构造
public Person(int id,String name,int age,String city) {//形式参数,接收实参
this.id=id; //this关键字,表达的含义是当前对象 .表示当前对象的某个调用
this.name=name;
this.age=age;
this.city=city;
}

this关键字作用是什么?

this关键字,表达的含义是当前对象,谁调用这个属性或方法就指的是那个对象 .表示当前对象的某个调用

public关键字的作用是什么?

表示访问的权限,public 的权限是最高的,也就是在类的内部或者外部谁都可以正常访问

private 关键字的作用是什么?

当属性全部私有化之后,在外部访问类中的属性,安全了,但是,不能访问了。

什么是封装?

把属性或着是方法私有化,外界无法直接访问。

如何解决这个问题?

使用setter方法和getter方法,把他们设置成public的,就可以解决了

static关键字?

静态的

为什么在main()方法中调用方法必须要在方法前加static ?
静态的方法只能调用静态的方法。
为什么静态方法只能调用静态方法?

类和静态的属性和方法放在内存中的方法区,生命周期在类的整个延续过程中。

而非静态的属性方法,生命周期短暂,只有在调用的时候调入内存中的栈空间,当执行结束,生命终止。

package com.swift;

public class DemoPerson {

    public static void main(String[] args) {
// TODO Auto-generated method stub
Person p1=new Person(110001,"刘备",43,"北京");//这叫实际参数,实参
Person p2=new Person(110002,"关羽",35,"上海");
Person p3=new Person(110003,"张飞",25,"广州");
Person p4=new Person(110004,"诸葛亮",20,"茅庐");
p1.setName("刘贝贝");
shuchu(p1.getName());
shuchu(p2.getName());
shuchu(p3.getName());
shuchu(p4.getName());
}
public static void shuchu(String what) {
System.out.println(what);
} }

private static int id;

在类中把字段,也就是属性修改为static关键字的,有什么不同。

package com.swift;

public class DemoPerson {

    public static void main(String[] args) {
// TODO Auto-generated method stub
Person p1=new Person(110001,"刘备",43,"北京");//这叫实际参数,实参
Person p2=new Person(110002,"关羽",35,"上海");
Person p3=new Person(110003,"张飞",25,"广州");
Person p4=new Person(110004,"诸葛亮",20,"茅庐");
p1.setName("刘贝贝");
shuchu(p1.getName());
shuchu(p2.getName());
shuchu(p3.getName());
shuchu(p4.getName());
shuchu(p1.introduce());
//id是Static静态的属性 静态的属性和方法,可以通过类名.的方式直接调用
shuchu(Person.id);
}
//方法的重载 参数的类型不同,参数的数量不同,参数的位置不同
public static void shuchu(int id) {
System.out.println(id);
}
public static void shuchu(String what) {
System.out.println(what);
}
//各种工具类的使用时,其实都是用的静态方法和属性
//如何求4的开方,要是用数学工具类Math
int a=(int) Math.sqrt(4);
//如鹏游戏引擎的使用
//GameCore.setbgview
//如果你想使用类和对象内的数据,有两种方法,一种方法,是把类实例化,生成对象,通过对象.进行调用,这种调用的特点是
//非静态可以直接调用
//调用数据和方法的第二种是,使用类名直接调用
//Position X,Y
//Position.X Position.y //这种方法调用前提是你的属性和方法时静态的 }
												

Java第7次作业:造人类(用private封装,用static关键字自己造重载输出方法)什么是面向对象程序设计?什么是类和对象?什么是无参有参构造方法 ?什么是封装?的更多相关文章

  1. 094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 04 static关键字(续)

    094 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  2. 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)

    093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  3. 092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 02 static关键字(中)

    092 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  4. 091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 01 static关键字(上)

    091 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  5. 《Java编程思想》读书笔记-基本规范、注释、static关键字、import关键字

    扫一扫加我的微信公众号,和我一起打好Java的基础 本文作为构建第一个Java程序的番外篇二,主要跟大家伙儿从浅层次的探讨下Java中的关键字import和static,此外为了让我们的代码可读性更强 ...

  6. Java面向对象-static关键字、静态方法与普通方法、静态成员变量

    Java面向对象-static关键字.静态方法与普通方法 static关键字的基本作用:方便在没有创建对象的情况下来进行调用(方法/变量). 很显然,被static关键字修饰的方法或者变量不需要依赖于 ...

  7. Java学习日记基础篇(四)——类,对象之成员变量,成员方法,构造方法

    面向对象(Object Oriented) 一.面向对象杂谈 面向对象(Object Oriented),我的翻译是以物体为目标的,就是说编程的时候是建立一个物体,然后对这个物体进行操作. Java语 ...

  8. JAVA:类,对象,成员属性,成员方法,构造方法,类变量,类方法<2>

    一.类的定义 一个全面的类定义是比较复杂的,  定义如下:

  9. Java学习第二篇:类,对象,成员属性,成员方法,构造方法,类变量,类方法

    一.类的定义 一个全面的类定义是比较复杂的,  定义如下:

随机推荐

  1. uoj#349. 【WC2018】即时战略(动态点分治)

    传送门 头一次看着题解有一种咱不会\(c++\)的感觉-- 看题解吧-- //minamoto #include<bits/stdc++.h> #include "rts.h&q ...

  2. c语言的小问题

    在c语言编程中要注意一个小问题,如果你编写scanf("%d",&n);printf("%d",n)这个你输入几就输出几,毫无疑问.但是现在问题来了?如 ...

  3. 【Ionic+AngularJS 开发】之『个人日常管理』App(一)

      写在前面的话 过去一年自己接触了不少手机前端开发,得益于现在手机性能的提升和4G普及,感觉使用混合技术开发手机App已经可以满足越来越多的应用场景了.新年伊始,对自己2016年所学知识做一个阶段性 ...

  4. python——函数重点总结

    参数的分类 形参:位置参数.默认参数.*args.命名关键字参数.**kwargs 实参:位置参数.关键字参数 命名关键字参数:定义在*后面的位置参数和默认参数叫作命名关键字参数:用来限制实参必须以关 ...

  5. Js 文件上传后缀验证

    //img格式验证 function imgFormat(name) { //再对文件名进行截取,以取得后缀名 var namearr= name.split("."); //获取 ...

  6. Ubuntu里let's encrypt通配符证书的自动续期更新

    环境与需求: Ubuntu云服务器上,已经做好了ssl证书的免费申请,但是证书的期限是3个月,3个月到期后必须重新申请或者更新.由于k8s集群里的服务一直在使用证书,每三个月人工更新太麻烦,所以想要配 ...

  7. 077 Combinations 组合

    给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合.例如,如果 n = 4 和 k = 2,组合如下:[  [2,4],  [3,4],  [2,3],  [1,2],  [ ...

  8. bzoj 2301: [HAOI2011]Problem b mobius反演 RE

    http://www.lydsy.com/JudgeOnline/problem.php?id=2301 设f(i)为在区间[1, n]和区间[1, m]中,gcd(x, y) = i的个数. 设F( ...

  9. ms sqlserver 登录失败 错误:4064

    无法打开用户默认数据库.登录失败.用户‘sa’登录失败.(Microsoft SQL Server, 错误:4064) 解决方法:解决方法:先用windows身份验证的方式登录进去,然后在 安全性=& ...

  10. nodejs 实践:express 最佳实践(八) egg.js 框架的优缺点

    nodejs 实践:express 最佳实践(八) egg.js 框架的优缺点 优点 所有的 web开发的点都考虑到了 agent 很有特色 文件夹规划到位 扩展能力优秀 缺点 最大的问题在于: 使用 ...