第11天 构造器、创建对象内存分析、三大特征之封装、继承
构造器详解
package com.oop.Demo02;
//java----->class
public class Person {
String name;
int age;
//实例化初始值
//1.使用new关键字,本质实在调用构造器,必须要有构造器
//2.用来初始化值
public Person() {
}
//有参构造:一旦定义了有参构造,无参就必须显示定义
public Person(String name, int age) {
this.name = name;
this.age = age;
}
//alt+insert
}
/*
public static void main(String[] args) {
//实例化一个对象
Person person = new Person("kuangshen",23);
System.out.println(person.name);//null
}
--------------------------------------------------
构造器
1.和类名相同
2.没有返回值
作用:
1.new 本质是调用构造器
2.初始化对象的值
注意点:
1.定义有参构造之后,如果使用无参构造,
显示的定义一个无参的构造
快捷键:
Alt + insert
this.* = 参数传进来的值
*/
3.创建对象内存分析
绘制内存分析图
public class Pet {
public String name;
public int age;
//无参构造
public void shout(){
System.out.println("叫了一声!");
}
}
/*
public static void main(String[] args) {
Pet dog = new Pet();
dog.name="旺财";
dog.age=3;
dog.shout();
System.out.println(dog.name);
System.out.println(dog.age);
Pet cat = new Pet();
//面向对象06:创建对象内存分析
}
*/
简单小结--类与对象
public static void main(String[] args) {
/*
1.类与对象
类是一个模板:抽象 对象是一个具体的实例
2.方法
定义、调用
3.对象的引用
引用类型:基本类型(8大基本类型)
对象是通过引用来操作的:栈--->堆
4.属性:字段Filed 或者成员变量
默认初始化:
数字:0 0.0
char:u0000
Boolean:false
引用: null
修饰符 属性类型 属性名 =属性值;
5.对象的创建和使用:
-必须使用new关键字创建对象,必须使用构造器 Person kuangshen =new Person();
-对象的属性 kuangshen.name;
-对象的方法 kuangshen.sleep;
6.类:
静态的属性 ----属性
动态的行为 ----方法
下一步学习封装、继承、多态!!!!
*/
}
提醒自己:总结下,前面基础必须掌握牢固,不然越欠越多,别放弃!加油!
- 面向对象的三大特征
封装
- 该露的露,该藏的藏
- 我们程序设计要求“高内聚,低耦合”。
- 高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;
- 低耦合就是仅暴漏少量的方法给外部使用
- 我们程序设计要求“高内聚,低耦合”。
- 封装(数据的隐藏)
- 通常,应禁止直接访问一个对象中的数据的实际表示,而应通过操作接口来访问,这成为信息隐藏
- 记住这句话就够了:属性私有 get/set
package com.oop.Demo04;
//类 private:私有
public class Studernt {
//属性私有
private String name; //名字
private int id; //学号
private char sex; //性别
private int age;
//提供一些可以操作这个属性的方法
//必须提供一些public的get set方法
//get 获得这个数据或属性
public String getName(){
return this.name;
}
//set 给这个数据设置值
public void setName(String name){
this.name = name;
}
//快捷键 Alt+Insert 也可以自动生成get set
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age>120||age<0){
this.age = 3;
}else {
this.age = age;
}
}
}
/*
1.提高程序的安全性,保护数据
2.隐藏代码实现细节
3.统一接口
4.系统可维护性增加
*/
/*
public class Application {
public static void main(String[] args) {
Studernt s1 = new Studernt();
s1.setName("秦始皇");
System.out.println(s1.getName());
s1.setAge(999);//不合法的
System.out.println(s1.getAge());
}
}
*/
继承
- 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模
- extends的意思是“扩展”,子类是父类的扩展。
- java中类只有单继承,没有多继承!一个儿子只能有一个爸爸吧,但一个爸爸可以有多个儿子
- 继承是类和类之间的一种关系,除此之外,类和类之家的关系还有依赖、组合、聚合等
- 继承关系的两个类,一个为子类(派生类),一个是父类(基类)。子类继承父类,使用关键字extends来表示。
- 子类和父类之间,从意义上将应该具有“is a“的关系
- object类
- super
- 方法重写
opp.demo05中的person----> teacher
----> student