javaSE基础面向对象笔记(5)抽象接口区别,默认方法和静态方法

1.抽象
抽象类:是因为没有必要创建对象
抽象方法:规范子类的实现
新增了一类方法
抽象方法
抽象类的构造方法存在的意义:让子类继承抽象类的属性和方法
抽象方法 不具体 没有大括号 方法体
final static private不能与abstract连用
当一个类无需创建对象的时候 可以考虑抽象类

public abstract class Person {
	int age;
	String name;
	public Person() {
		super();		
	}
	public Person(int age, String name) {
		super();
		this.age = age;
		this.name = name;
	}
	public void eat() {
		System.out.println("吃");
	}
	public void a() {		
	}
	public abstract void sleep();
}
public class Student extends Person{
	//如果父类中有抽象方法,则子类必须重写此方法
	@Override
	public void sleep() {
		System.out.println("睡觉");
	}
}

2.接口
接口和抽象类都不能创建对象
都有抽象方法
抽象类只能单继承,并且是同类食物进行继承
接口是多实现,多继承,接口可以做用在不同类型事务上,主要目的是为了给不同类别事务进行拓展功能
类与类之间:单继承
类与接口:多实现
接口与接口之间:多继承

public interface BlueTooth {
	public void conn();	
	public void disconn();
}
public class Car implements BlueTooth{
	@Override
	public void conn() {		
	}
	@Override
	public void disconn() {
	}
}

类与接口 实现的关系 implements
实现类 类名 implements 接口名字
一个类允许同时实现多个接口,多实现
可以拓展更多的功能
要先继承 再实现
接口都是抽象方法
class类
interface 接口
抽象方法
公共静态常量
静态常量
接口中的静态常量可以省略 public static final
抽象方法 可以省略 public abstract

public class OldComputer {
	public void show() {
		System.out.println("展示计算结果");
	}
}
public interface Usb {
	//静态常量
	double SPEED = 3.2;	
	void insert();
	public abstract void pop();
}
public interface Internet {
	public void onLine();	
	public void offLine();
}
public interface BlueTooth {
	public void conn();
	public void disconn();
}
public class Computer extends OldComputer implements Usb,Internet,BlueTooth{
	@Override
	public void insert() {
		System.out.println("U盘插入了");
	}
	@Override
	public void pop() {
		System.out.println("U盘弹出了");
	}
	@Override
	public void onLine() {
		System.out.println("联网了");
	}
	@Override
	public void offLine() {
		System.out.println("断网了");
	}
	@Override
	public void conn() {
		System.out.println("蓝牙已连接");
	}
	@Override
	public void disconn() {
		System.out.println("蓝牙已断开");
	}
}
public class Test {
	public static void main(String[] args) {
		Computer computer = new Computer();
		computer.insert();
		computer.pop();
		System.out.println(computer.SPEED);
	}
}

默认方法:允许存在方法体
访问权限修饰符中 缺省 没有关键字,而不是用default
如果实现了一个 接口 有默认方法 不需要重写
如果同时实现了两个接口, 中有同名同参数的默认方法, 必须重写
可以通过 接口名字.super.方法名字() 调用指定接口中的方法
如果就是想要自己的逻辑 可以将提供好的 接口名字.super.方法名字() 删掉,写自己逻辑就可以了

public interface A {
	public default void tongdian() {
		System.out.println("通电");
	}
}
public interface B {
	//默认方法:允许存在方法体
	public default void tongdian() {
		System.out.println("zif");
	}
}
public class LD implements A,B{
	@Override
	public void tongdian() {
	}
	public class TV implements A{
}
public class Test {
	public static void main(String[] args) {
		TV tv = new TV();
		tv.tongdian();
	}
}

3.默认方法和静态方法的对比
存在默认方法和静态方法, 简化实现类的实现

  1. 静态方法 只能由接口名字调用, 不允许重写, 在所有实现类都满足功能的时候, 静态方法, 可以减少实现类创建对象的过程
  2. 默认方法: 总有一些特殊的实现类,方法体不同, 需要重写, 只能考虑默认方法
    4.抽象类和接口区别
    语法:
    1>抽象类使用abstract,接口使用interface
    2>抽象类中可以包含抽象方法,也可以不包含,接口中只能包含抽象方法和静态常量,jdk1.8之后接口可以包含静态方法和默认方法。
    3>抽象类和接口都不能实例化。
    4>抽象类可以包含构造方法,接口中没有构造方法。
    5> 抽象类 只能单继承, 类与接口 多实现 , 接口与接口是多继承
    6> 子类继承抽象类 extends 实现类实现接口 implments
    7> 抽象类: 创建对象是没有意义的, 不用创建
    接口 : 拓展功能
    抽象方法:规范子类的实现
    功能:
    1>抽象类一般用来表示同类事物,接口可以表示不是同类事物。
    2>抽象类可以实现代码的重用,也可以约束子类的功能。接口就是约束实现类的功能,降低代码之间的耦合性。
public interface A {
	public static void show() {
		System.out.println("show time");
	}
}
public class SubA implements A{
}
public class Test {
	public static void main(String[] args) {
		//接口中的静态方法 只能由接口名字调用
		A.show();//一个功能 只需要接口调用,简化了实现类创建对象调用的过程
		SubA subA = new SubA();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值