Java自学笔记⑦

类的封装

将对象的属性和行为封装起来的载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想

类的继承

//child extends parents
//这里child这个类作为子类继承了parents这个类,并继承parents中的属性和方法
//Java中的类只支持单继承,即一个子类只能继承自一个父类。
class Computer {
	 String screen="液晶显示屏";
	 void startup(){
		 System.out.println("电脑开机中");
	 }
}
public class Pad extends Computer {
	String battery="5000毫安电池 ";
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Computer pc =new Computer();
		System.out.println("computer的屏幕是"+pc.screen);
		pc.startup();
		Pad ipad=new Pad();
		System.out.println("pad屏幕是:"+ipad.screen);
		System.out.println("pad电池是:"+ipad.battery);
		ipad.startup();
	}

}

方法的重写

重写就是在子类中将父类的成员方法的名称保留,重新编写成员方法的实现内容,更改成员方法的存储权限,或是修改成员方法的返回值类型。

注:在继承中还有一种特殊的重写方式,子类与父类的成员方法返回值、方法名称、参数类型及个数完全相同,唯一不同的是方法实现内容,这种特殊重写方式被成为重构。

注意:当重写父类方法时,修改方法的修饰权限只能从小的范围到大的范围改变。

class Computer2{
	void showPicture(){
		System.out.println("鼠标单击图片");
	}
}

public class Pad2 extends Computer2 {
	void showPicture(){
		System.out.println("手指点击触摸屏");
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Computer2 pc =new Computer2();
		pc.showPicture();
		Pad2 pad=new Pad2();
		pad.showPicture();//重写父类方法
		Computer2 pc2=new Pad2();//父类声明,子类实现
		pc2.showPicture();//调用父类方法,实现子类重写的逻辑
	}

}

super关键字

如果想在子类的方法中实现父类原有的方法,就需要用到super

//super.property;	//调用父类的属性
//super.method();	//调用父类的方法
//super关键字的使用方法与this关键字类似,this关键字代表本类对象,super关键字代表父类对象
class Computer3{
	String sayHi(){
		return "欢迎使用";
	}
}

public class Pad3 extends Computer3 {
	String sayHi(){
		return super.sayHi()+"平板电脑";
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Computer3 pc=new Computer3();
		System.out.println(pc.sayHi());
		Pad3 ipad=new Pad3();
		System.out.println(ipad.sayHi());
		
	}

}

注意:如果在子类构造方法中使用类似super()的构造方法,其他初始化代码只能写在super()之后,不能写在前面,否则会报错。

所有类的父类——Object类

Object类

是所有类的父类,是Java类层中的最高层类。

class Anything{
    
}
//等价于
class Anything extends Object(){
    
}
注意:Object类中的getClass()、notify()、notifyAll()、wait()等方法都不能被重写,因为这些方法都被定义为final类型。

equals()方法

class V{

}

public class Equal {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
	String s1="123";
	String s2="123";
	System.out.println(s1.equals(s2));//输出true
	V v1=new V();
	V v2=new V();
	System.out.println(v1.equals(v2));//输出false			
	}
}

注意:在自定义的类中使用equals()方法进行比较时,将返回false,因为equals()方法的默认实现是使用"=="运算符比较两个对象的引用地址,而不是比较对象的内容。

类的多态

方法的重载

public class OverLoadTest {
	public static int add(int a){
		return a;
	}
	public static int add(int a,int b){
		return a+b;
	}
	public static double add(double a,double b){
		return a+b;
	}
	public static int add(int a,double b){
		return (int)(a+b);
	}
	public static int add(double a,int b){
		return (int)(a+b);
	}
	public static int add(int... a){
		int s=0;
		for(int i=0;i<a.length;i++){
			s+=a[i];
		}
		return s;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(add(1));
		System.out.println(add(1,2));
		System.out.println(add(2.1,3.3));
		System.out.println(add(1,3.3));
		System.out.println(add(1.3,3));
		System.out.println(add(1,2,3,4,5,6,7));
		System.out.println(add(3,5,4));
	}
}

抽象类与抽象方法

//[权限修饰符] abstract class 类名{
//	类体
//}
//使用abstract关键字定义的类成为抽象类,而使用abstract关键字定义的方法称为抽象方法
//抽象方法的定义语法如下
//[权限修饰符] abstract 方法返回值类型 方法名(参数列表);
抽象方法是直接以分号结尾的,它没有方法体,抽象方法本身没有任何意义,除非它被重写,而承载这个抽象方法的抽象类必须被继承,实际上,抽象类除了被继承之外没有任何意义。
注:构造方法不能定义为抽象方法。

接口

接口是抽象类的延伸,可以将它看作是纯粹的抽象类,接口中的所有方法都没有方法体

//[修饰符] interface 接口名 [extends 父接口名列表]{
//	[public][static][final]常量;
//	[public][abstract]方法;
//}
//修饰符:可选,可选值为public 如果省略则使用默认的访问权限
//接口名:必选参数,接口名必须是合法的Java标识符,要求首字母大写一般
//方法:接口中的方法只有定义没有被实现
//一个类实现一个接口可以使用implements关键字
//public class Parallelogram extends Quadrangle implements drawTest{
//...//
//}
//在接口中定义的任何变量都自动是static和final的,因此,在接口中定义变量时,必须进行初始化,
//而且,实现接口的子类不能对接口中的变量重新赋值

final关键字

final类

定义为final的类不能被继承

//final class类名{}
final方法

定义为final的方法不能被重写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值