java面向对象

抽象类

包含抽象方法的类就是抽象类,抽象类由关键字abstract定义,其中抽象方法也是用abstract来修饰,抽象方法没有方法体。继承抽象类的子类必须在其定义过程中实现父类中的抽象方法(重写),重写的方法中可以什么都不做,即方法体中为空。

//抽象类定义
abstract class Person{
		//抽象方法中可以包含各适用范围属性
		private int id;
		public String name;
		protected String sex="男";
		int age=26;
		//构造方法定义,抽象类中若是定义构造方法时候必须包含一个无参构造方法,不能只定义有参构造方法
		//或者不提供任何一种构造方法,此时,系统默认提供一个无参的构造方法
		public Person(){}
		public Person(String name){
				this.name=name;
		}
		//抽象方法定义,修饰符可以是default,public和protected
		abstract public void work(); //抽象方法定义,修饰符不能为private,因为private的情况下,子类无法访问,则更无法取实现。
		//以下抽象方法定义也可以
		//public abstract void work();
		//具体方法定义
		public void setId(int id){
				this.id=id;
		}
}
//子类继承抽象类并且必须实现其中的抽象方法
class Student extends Person{
		public void work() {
				System.out.println("上班!");
		}
}

注意事项

抽象类可以包含属性,方法和构造方法,抽象类中的构造方法不能用来new实例对象,只能被子类调用;
抽象类只能用来被继承,且抽象方法必须被子类实现;
含有抽象方法的类只能定义成抽象类;
抽象类不能创建实例,但是可以用于声明引用变量类型。

接口

接口中定义了一组规范或者说定义了一组规则,是对对象的一种抽象,最能体现面向对象的精髓。

定义接口的详细说明

1、访问修饰符只能是public或者默认修饰符
2、接口名和类名采用相同命名机制;
3、extends:接口可以多继承;
4、接口中不能包含构造方法;
5、常量:接口中的属性只能是常量,总是public static final修饰,不写也是;
6、子类通过关键字implements来实现接口中的规范;
7、接口不能创建实例,但是可以用于声明引用变量类型;
8、接口中的方法只能是public abstract,省略也是,jdk1.8以后可以包含普通的静态方法或者默认方法

接口中包含静态方法

public class Test {
		public static void main(String[] args) {
				A.staticMethod();
				Test_A.staticMethod();
		}
}
interface A {
		public static void staticMethod(){
				System.out.println("A.staticMethod");
		}
}
class Test_A implements A {
		public static void staticMethod(){
				System.out.println("Test_A.staticMethod");
		}
}

接口中包含默认方法

public class Test {
		public static void main(String[] args) {
				A a = new Test_A();
				a.moren();
		}
}
interface A {
		default void moren(){
				System.out.println("我是接口 A 中的默认方法!");
		}
}

class Test_A implements A {
		@Override
		public void moren() {
				System.out.println("Test_A.moren");
		}
}

默认方法中可以调用静态方法

public class Test {
		public static void main(String[] args) {
				A a = new Test_A();
				a.moren();
		}
}
interface A {
		public static void staticMethod(){
				System.out.println("A.staticMethod");
		}
		public default void moren(){
				staticMethod();
				System.out.println("A.moren");
		}
}

class Test_A implements A {
		public static void staticMethod(){
				System.out.println("Test_A.staticMethod");
		}
}


接口和抽象类的区别

1.接口就是比抽象类还要抽象的抽象类,可以更加规范的对子类进行约束。全面而专业地实现了:规范和具体实现的分离。
2. 抽象类还提供某些具体实现,接口不提供任何实现,接口中所有方法都是抽象方法。接
口是完全面向规范的,规定了一批类具有的公共方法规范。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值