JavaSE入门:JVM四大特性:面向对象——构造方法,This,Super,权限修饰符

面向对象:

创建对象

类 对象名=new 类();

Cat cat=new Cat();

//类
class Cat{
}

构造方法

语法格式: 修饰符 类名(参数列表…){方法体}

作用 : 创建当前类的实例化对象.并初始化成员属性

注意:

  • 如果不指定构造方法,系统会默认指定一个无参构造;如果我们指定了构造方法,不管我们指定的是无参还是有参,系统都不会再指定无参构造。但是建议大家在设置有参构造的时候,再指定一个无参构造。
public class Constructor_01 {
	int age;
	public static void main(String[] args) {
		Constructor_01 c=new Constructor_01();
//		无参的    无法调用第一个方法(有参)   
		System.out.println(c.age);
	}
	public Constructor_01(int i) {
		age=i;
	}
	public Constructor_01() {
		age = 18;
	}
}
  • 不能加static,构造方法具有双重性
    - 想要提供一个创建对象的方法,那么这个方法一定是静态的
    - 静态方法中不能直接访问成员属性,成员方法中可以,所以想要初始化成员属性,必须放在成员方法中 ,所以构造方法是成员的
    - 因此创建对象并初始化成员属性,这个方法必须具有静态和成员双属性

构造方法可以和成员方法同名,不用担心怎么区分,因为构造方法没有返回值这个键位

This

介绍

this是每个对象保存自身内存地址的一个引用类型的成员变量

  • 表示对象自己,不能出现在静态上下文中,只能出现在成员方法中。
  • 用哪个对象调用的成员方法,那么成员方法中的this就是表示哪个对象。

作用与用法:

  1. 用在成员方法中,方便区分同名的成员变量和局部变量

  2. 构造方法

    • 同上
    • 用于重装调用,用当前类中的其他构造方法,提高代码重用性
  3. return this 可以返回当前对象的内存地址,能做到链式调用

    扫描二维码关注公众号,回复: 11561542 查看本文章
//		创建一个对象(本类)
		This_01 t = new This_01();
//		尝试输出对象t   这里是构造函数的赋值先赋值然后才是对象的成员变量
		System.out.println(t);
//		int i=t.m3();
//		System.out.println(t);
//		链式调用
		t.m1().m2();
		System.out.println(t);
//		等价于
		This_01 s=t.m1();
		System.out.println(s);
	}

	public This_01 m1() {
		int b = 1;
		System.out.println(b);
		System.out.println(this.b);
		return this;
	}

Super

结构

super(参数);

作用

保存父类特征

  • 1,用于子类成员方法中,区分子类和父类同名的成员变量/成员方法
  • 2,用于子类构造方法,第一种,同上 ,第二种,用于调用父类构造方法

用处

用在子类中,找父类

注意

  • 必须在子类构造方法第一行
  • this(xxx)和super(xxx)不能同时存在,两者都不能出现在静态上下文中; 当子类构造没有this(参数)和super(参数)时会默认一个super(),无参去调用;
		Super_01(){
//		不写,默认会有super()调用父类无参构造
		super();
		System.out.println("子类构造");
	}
	int i=2;
	public static void main(String[] args) {
		Super_01 s=new Super_01();
		s.m1();
	}
	private void m1() {
//		子类
		System.out.println(i);
//		父类
		System.out.println(super.i);
//		子类
		System.out.println(this.i);
	}
}
class A{
//	先输出父类构造方法
	A(){
		System.out.println("父类构造");
	}
	int i=10;
}

权限修饰符

  • private:私有,除了当前类,在哪都调用不了
  • public:公共,哪都能调用
  • protected:继承权限,同包,同类,子类都可以,其他不行
  • 默认(default):默认,默认为包权限,同包,同类可以,其他不行

猜你喜欢

转载自blog.csdn.net/lfz9696/article/details/107749354