一.this
是什么?
是对每个对象中保存自身内存地址的一个引用类型变量
this的用处
1.在成员方法/构造方法中,使用this来区分同名的成员变量和局部变量
public class User {
private String username;
private String password;
private String nickname;
//getters/setters方法
public String getUsername(){ //获取用户名 直接返回
return username;
}
public void setUsername(String username){ //设置用户名
this.username = username;
}
public String getPassword(){ //获取密码
return password;
}
public void setPassword(String password){ //设置密码
this.password = password;
}
public String getNickname(){ //获取昵称
return nickname;
}
public void setNickname(String nickname){ //设置昵称
this.nickname = nickname;
}
public User(String username,String password,String nickname){ //全参构造
this.username = username;
this.password = password;
this.nickname = nickname;
}
}
2.在构造方法中,可以用来调用当前对象的其他构造方法(这条语句必须写在构造方法的第一行)
public User(){
}
public User(String name){
this(); //通过this调用无参构造器
this.name = name;
}
public User(String name,int age){
this(name); //通过this调用第二个构造器
this.age = age;
}
3.return this; 做到链式调用
public class peop {
public static void main(String[] args) {
peop p1 =new peop();
p1.fun2().fun1(); //返回的是对象就可以链式调用
}
public void fun1(){
System.out.println("fun1执行了");
}
public peop fun2(){
System.out.println("fun2执行了");
return this; //通过this返回 返回的是对象
}
二.static
是什么?
static是修饰符,用于区分静态和成员属性
static的用处
1.使用static修饰的变量是静态变量
2.使用static修饰的方法是静态方法
3.使用static修饰的语句块/代码段是静态语句块
静态语句块
static{} 就看作为一个没有名字的方法,不可以复用,只执行一次
程序加载时,会自动调用静态语句块且只执行一次
访问一个类的静态属性时,会加载该类
因为静态语句块先执行,且只执行一次,所以适合做一些类初始化的工作
实例语句块
{} 就是一个实例语句块,只有一对大括号
每次创建对象时,实例语句块都会执行,并且在构造方法之前执行
三.封装
包机制
package
通过包机制,可以对文件进行分类管理,解决命名冲突问题
package语句必须在文件的第一行
import
import用于导入用到的其他类
import语句必须写在package语句之下,class语句之上
权限控制
private 私有的,只能在当前类中使用,无法在其他类中访问
缺省 只能在同包的类中使用
protected 受保护的,只能在同包的类中使用,或在继承关系下通过子类使用
public 公共的,可以在任何情况下访问到
四.继承
是什么?
继承是从已有的类中派生出新的类,这个新的类具有其父类的属性和方法,并且还能扩展新的属性和方法,但是被private修饰的属性不能被继承
java只支持单继承,即一个类只有一个父类,但是一个类可以被多个类继承
继承的用处
提高代码的复用行,方法覆写,多态
继承的使用
class People{ String name; int age; } class Student extends People{ //Student类继承于People类 }
五.super
super用于在子类中表示父类
super的用法
1.在子类成员方法/构造方法中,用于区分子类和父类中同名的成员变量
super.xxx
2.在子类的构造方法中,通过super(...)来调用父类中的构造方法
必须写在子类构造方法中的第一行
this()和super() 不能同时出现在构造方法中
如果子类构造方法中,没有显示this()和super()的话,就默认第一行 存在super()调用父类无参构造
六.覆写/重写(override)
是什么?
"覆写"是对子类继承父类的方法进行重新编写
覆写的要求
1.必须是继承关系
2.方法名,返回值,参数列表 和父类都必须保持一致
3.重写的方法的权限不能低于原来的方法
4.不能比原来的方法有更多的异常
5.只有成员方法才能进行覆写
覆写的目的
1.满足某种需求
2.使方法中的错误越来越少
3.使方法的权限变广泛
public class people {
public void eat(){
System.out.println("人需要吃饭");
}
public void sleep(){
System.out.println("人需要睡觉");
}
}
public class child extends people{ //child继承于people
@Override
public void eat(){ //重写eat()
System.out.println("儿童应该吃有营养的饭");
}
@Override
public void sleep(){ //重写sleep()
System.out.println("儿童应该睡充足的觉");
}
}