< 今日知识点 >
- 构造器
- 创建对象内存分析
- 简单小姐类与对象
- 封装
- 继承
- Super
·
·
·
—01 构造器
1、一个类即使什么也不写,它也会存在一个默认的构造器
2、构造器:
- 使用new关键字,本质是在调用构造器(有参构造和无参构造)
- 一旦定义了一个有参构造,如果想使用无参构造,无参构造就必须显式定义 (方法的重载)
- 用来初始化值
—>例子:
public class Application {
public static void main(String[] args) {
//new:实例化了一个对象
Person person = new Person(); //在定义了有参构造的情况下想要调用无参构造的情况
System.out.println(person.name);
}
}
· 下面是person类
public class Person{
String name;
public Person(){ //显式定义无参构造
}
public Person(String name){ //有参构造
this.name = name;
}
}
3、构造器的特点:
- 名字和类名相同
- 没有返回值
·
·
·
— 02 创建对象内存分析
一些凌乱的笔记:
- 堆储存对象和数组元素,栈储存系统调用变量
- static:和类一起加载的
- 类在栈,对象在堆,属性在方法,后传到堆 (方法区属于堆)
·
·
·
— 03 简单小结类与对象
1、类是一个模板(抽象),对象是一个具体的实例(具体)
2、对象的引用
- 引用类型(即对象是通过引用来操作的,真实对象在堆里)、基本类型(8大基本类型)
3、对象的属性: - 默认初始化:数字 0,char u0000 ,boolean false,引用 null
- 修饰符 属性类型 属性名 = 属性值
4、对象的创建和使用 - 必须使用new关键字创造对象,必须有构造器 Person linjunjie = new Person();
- 对象的属性 linjunjie.name;
- 对象的方法: linjunjie.sleep();
·
·
·
— 04封装
1、封装说白了:该露的露,该藏的藏
- 我们程序设计要追求:高内聚,低耦合。高内聚就是类的内部细节操作自己完成,不允许外部干涉;低耦合就是仅暴露少量的方法给外部使用。
2、封装(数据的隐藏):通常,应禁止访问一个对象中数据的实际表示,而应该通过操作接口来访问,这称为数据隐藏。
3、封装的意义:
- 提高程序的安全性,保护数据
- 隐藏代码的实现细节
- 统一接口
- 增加系统的可维护性
4、记住这句话:属性私有,get/set
·
·
·
— 05 继承
1、继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模
2、extend的意思是“扩展”。子类是父类的扩展。
3、子类继承了父类,就会拥有父类的全部方法(但是不能是private)
4、记住一个快捷键:ctrl+H
5、在Java中所有的类都直接或间接默认继承object类。
6、Java中只有单继承,没有多继承!!
继承是类与类之间的一种关系。除此之外,类与类的关系还有依赖、组合、聚合等等。
继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。
如:public class Student extends Person{ }
子类和父类之间,从意义上讲是 xxx is a xxx 的关系。
·
·
·
—06 super
public class Person {
protected String name = “linjunjie” ;
public void print ( ) {
System.out.println( “Person” ) ;
}
}
/
public class Student extends Person {
private String = "JJ LIN“ ;public void print ( ) { System.out.println (" Student " ) ; } public void test ( String name ) { System.out.println ( name ); // 林俊杰 System.out.println ( this . name ) ; // JJ LIN System.out.println ( super . name ) ; // linjunjie }
}
/
public class Application {
public static void main (String[ ] args ) {
Student student = new Student ( ) ;
student . test ( "林俊杰” );
}
}
/
·
- 运行结果:
林俊杰
JJ LIN
linjunjie
·
-笔记:
1、super注意点:
- super调用父类的构造方法,必须在构造方法的第一个
- super必须只能出现在子类的方法或者构造方法中!
- super 和 this 不能同时调用构造方法!!
2、VS this
- 代表的对象不同:this:本身调用者这个对象 /// super :代表父类对象的应用
- 前提:this:没有继承也可以使用,super :只能在继承条件下使用
- 构造方法:this ();本类的构造 ,super();父类的构造