Java笔记(抽象类、接口类、封装)

/**
 * 抽象类
 * 接口类
 * 封装
 */



1.抽象类(abstract 修饰的普通类 + 抽象方法)
	1.1 抽象方法:只有方法定义,没有方法体
		public abstract class Animal {
		
			public abstract void run();
		}
	
	1.2 继承于抽象类必须要重写该抽象类里面的抽象方法
		public class Dog extends Animal{

			@Override
			public void run() {
				System.out.println("奔跑");
			}
	
		}

	1.3 抽象类不能实例化
		public class Test {

			public static void main(String[] args) {
				//调用抽象类 Animal 里面的 eat() 方法
				//Animal a = new Animal();	//报错
		
				//以上说明抽象类不能实例化
			}
		}

	总结:	抽象类可以有非抽象方法,有抽象方法的类一定是抽象类或接口
	    	抽象方法(abstract)只有方法声明,没有方法体
	     	抽象类不允许直接实例化
			子类用 extends 继承抽象类 -> public class 类名 extends 抽象类

2.接口(interface)
	2.1 接口中只有抽象方法
		public interface USB {

			//没有构造方法
	
			//属性只能由 public static final 修饰(不写,默认加上)
			String NAME = "传输";
	
			//方法不加 abstract,默认加上
			public void name();
		}

	2.2 实现接口,必须要重写接口中的抽象方法
		public class MacBook implements USB{

		@Override
		public void name() {
			System.out.println("我是 MacBook 的 usb 接口");
		
		}
	}
	2.3 接口也不允许被实例化

	总结:	接口中只有抽象方法(构造方法也没有)
		接口中定义属性只能由 public static final 修饰(可以省略,默认存在)
		接口中定义方法也可省略 abstract (默认存在)
		接口不允许实例化
		子类用 implements 实现接口	-> public class 类名 implements 接口

注意:	java 中只能单继承(extends 后面只能有一个类),但可以多实现(implements 后面可以有多个接口,用逗号隔开)
	类可以在继承类的同时实现一个或多个接口(先继承后实现)

3.抽象类与接口的区别
	相同点:	定义标准,让子类实现这些标准

	不同点:	抽象类中可以有非抽象方法,接口中只能有抽象方法
			抽象类与子类是继承关系 -> public class 类名 extends 抽象类
			接口与子类是实现关系 -> public class 类名 implements 接口
			一个类只能继承一个抽象类,一个类可以实现多个接口(用逗号隔开)
			抽象类可以继承类或实现接口,接口只能继承接口(没有实现功能)
			接口中的属性全部是 public static final 类型的
			抽象类有构造方法,接口中没有构造方法

4.封装
	4.1 如果我想装 100 分,怎么装? 定义一个整数变量 -> int score = 100; 

	4.2 如果我想装 10 个 100 分,怎么装?定义一个整数数组 -> int[] scores = new int[10]; 

	4.3 如果我想装一个学生的名字、年龄、分数,怎么装? 定义一个类 -> Student

	4.4 如果我想装多个学生,怎么装?定义一个集合 -> ArrayList



		//第一个学生
		Student s = new Student("张三", 100, 20);
		
		//第二个学生
		Student s2 = new Student("李四", 90, 21);

		//......
	
		//把上面的数据(对象)用集合装起来
		//创建集合
		ArrayList students = new ArrayList();
		
		students.add(s);	//往集合中存入对象
		students.add(s2);
		
		//以上完成了装箱
		
		//下面是拆箱
		Student s3 = (Student)students.get(0);	//通过下标获得对象
		Student s4 = (Student)students.get(1);
		
		System.out.println(s3);
		System.out.println(s4);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值