拔丝芋头的Java学习日记---Day9

< 今日知识点 >

  • 构造器
  • 创建对象内存分析
  • 简单小姐类与对象
  • 封装
  • 继承
  • 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();父类的构造
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值