面向对象/2024/1/9

本文详细解释了Java编程中的关键字this,如何在成员方法和构造方法中使用,以及static的含义与用途。还介绍了封装、继承的概念,包括包机制、权限控制和单继承。此外,覆盖(覆写)方法的概念及其要求也被深入讨论。
摘要由CSDN通过智能技术生成

一.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("儿童应该睡充足的觉");
	}
}

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值