面向对象之关键字

return关键字

在返回值的方法中 : 1.返回数据 2.结束方法
在没返回值的方法中 : 1.结束方法

this关键字

一 this关键字:this就理解成当前对象
this可以调用属性,方法,构造器

二 this可以用来调用类中的属性和方法:

在方法(构造器)中,可以通过使用"this."来调用当前对象(正在创建的对象)的属性和方法。

往往我们都会省略掉"this."。但是如果方法的(构造器的)形参和属性的名字相同时。那么就必须使用
"this."用来区分属性和局部变量

三 this调用构造器:

	格式 :this(形参列表)
	作用 :调用本类中的其它构造器
	说明:
		1.this(形参列表)必须放在构造器的首行
		2.同一个构造器中最多只能有一个this(形参列表)
		3.如果一个类有N个构造器,那么最多只能有N-1个this(形参列表)

四 通过构造器给属性赋值

class Person{
	String name;
	int age;
	int sex;
	String address;
	
	public Person(String name){
		this.name = name;
	}
	public Person(String name,int age){
		this(name);
		this.age = age;
	}
	public Person(String name,int age,int sex){
		this(name,age);
		this.sex = sex;
	}
	public Person(String name,int age,int sex,String address){
		this(name,age,sex);
		this.address = address;
	}

}

import关键字

关键字 (import) : 导包
1. 在源文件中使用import显式的导入指定包下的类或接口
2. 声明在包的声明和类的声明之间。
3. 如果需要导入多个类或接口,那么就并列显式多个import语句即可
4. 举例:可以使用java.util.*的方式,一次性导入util包下所的类或接口。
5. 如果导入的类或接口是java.lang包下的,或者是当前包下的,则可以省略此import语句。
6. 如果在代码中使用不同包下的同名的类。那么就需要使用类的全类名的方式指明调用的是哪个类。
7. 如果已经导入java.a包下的类。那么如果需要使用a包的子包下的类的话,仍然需要导入。
8. import static组合的使用:调用指定类或接口下的静态的属性或方法

全类名 : 包含包名在内的类的全名称

package

关键字 (package) : Java为了实现对类进行统一的管理和划分所以有了包的概念。

说明:
	1.包名 :包名应该全部小写 - xxxyyyzzz 
	2.如何命名 : 机构的类型(com.org.edu + 机构的名称  + 项目名  + 模块名
	3.每"."一下就是一层目录
	4.同一个包中的类名不能相同,不同包中的类名可以相同。
	5.package com.atguigu.java;必须声明在源文件的首行
	6.在源文件中加上package com.atguigu.java,当我们进行编译时就能将生成的字节码文件放到对应的包中。

super

一 super可以调用(父类的):属性,方法,构造器

二 super调用属性和方法:
在子类的构造器和方法中可以使用"super.“调用父类中的属性和方法,我们可以省略"super.”。
如果子类和父类中的属性名相同或者子类重写了父类中的方法,
那么必须使用"super."来区分调用的是子类的还是父类的。

三 super调用构造器:
格式 :super(形参列表)
说明 :
1.super(形参列表)必须放在构造器的首行
2.super(形参列表)和this(形参列表)同时只能一个。
3.在子类的构造器中如果没显示的使用super(形参列表)和this(形参列表)默认使用super()

总结 :创建子类对象必调父类构造器

四 常见问题:

Implicit super constructor SuperClass() is undefined. Must explicitly invokeanother constructor

解决的方式:
方式一:父类提供一个空参的构造器
方式二:子类构造器中显示去调用父类中的有参构造器

补充说明:不能在main方法中直接使用super调用这个属性,因为main方法是程序的入口,没有继承关系(暂时理解)

static

static:静态的
一 可以用来修饰的结构:属性,方法,代码块,内部类
变量的分类(安位置分) : 属性 vs 局部变量
属性的分类 :实例变量 vs 类变量

二 static修饰属性(类变量)
1.同一个类创建的多个对象,每个对象单独拥有一份实例变量,共同拥有一份类变量。
2.同一个类多个对象中某个对象对类变量进行修改后,其它的对象看到的是修改后的值。
3.类变量是随着类的加载而加载的(类加载加载一次)。实例变量是随着对象的创建而加载的。
4.调用类变量的方式 : 类名.类变量名 对象名.类变量

三 static修饰方法(静态方法)
1.静态方法是随着类的加载而加载的。
2.静态方法中不能调用实例变量和非静态方法 (原因 :因为加载时机不同。类加载的时候对象还没呢)
3.非静态方法中可以调用类变量和静态方法
4.静态方法中不能使用"this"和"super"关键字

四 使用场景
static修饰属性 :
1.多个对象需共同拥有该属性时那么使用static修饰
2.常量 : public static final double PI = 3.14159265358979323846;
static修饰方法:
1.工具类中的方法都是静态方法
2.有时为了调用类变量方法也会定义成静态方法。

五 使用案例

 1.统计某个类对象创建的个数
 2.实现对象中的属性的值自增效果
/*
 * 1.需求 :统计Computer创建对象的个数
 */
class Computer{
	static int count = 0;
	
	public Computer(){
		count++;
	}
	
	public void show(){
		System.out.println("count=" + count);
	}
}

/*
 * 需求: 让id实现自增
 */
class Employee{
	int id;
	String name;
	int age;
	static int num = 0;
	
	public Employee(String name,int age){
		this.name = name;
		this.age  = age;
		id = ++num;
	}
	
	public void show(){
		System.out.println("id= " + id + " name=" + name + " age=" + age);
	}
}

final

final修饰类:final修饰的类不能被继承

final修饰方法:final修饰的方法不能被重写

final修饰变量:final修饰变量值不能被修改

final修饰的属性的赋值方式 :1.显示赋值 2.构造器赋值 3.代码块赋值

abstract

一 abstract可以修饰: 类,方法

二 abstract修饰方法(抽像方法) :
1.抽象方法没方法体
2.抽象方法所在的类必须为抽象类

三 abstract修饰类(抽像类):
1.抽象类不能被实例化
2.思考 :抽象类有没有构造器? 有的 - 因为子类对象的实例化过程
3.非抽象子类继承抽象类后必须重写抽象父类中的所有抽象方法
4.如果非抽象子类不想重写抽象父类中的抽象方法
①那么该子类也需要变成抽象子类。
②如果直接抽象父类重写了间接抽象父类中的抽象方法那么非抽象子类就不需要再重写该抽象方法
5.抽象类中不一定有抽象方法。

四 abstrcat不可以和哪些关键字一起使用 :

final,static,private

五 抽像类和接口的区别?
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值