欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

黑马程序员_毕向东_Java基础****学习笔记(十九)

程序员文章站 2022-07-08 08:00:08
...

----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流!----------------------

package day04;

/*
 * finao:最终。作为一个修饰符
 * 1.可以修饰类,函数,变量
 * 2.被final修饰的类不可以被继承,为了避免被继承,被子类复写功能
 * 3.被final修饰的方法不可以被复写
 * 4.被final修饰的变量时一个常量,只能被赋值一次,既可以修饰成员变量,又可以修饰局部变量
 * 		当在描述事物时,一些数据的出现值时固定的,这时为了增强阅读性,给这些值起个名字,方便与阅读
 * 		而这个值不需要改变,所以加上final修饰,作为常量:常量的书写规范是:所有字母都大写
 * 		如果由多个单词组成,单词间通过下划线连接
 * 5.内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量。
 */
final class Demo {
	int x=4;
	public static final double PI=3.14;
	final void show1() {   //show()1方法补课以被复写

	}

	void show2() {
		System.out.println(PI);
	}
}

/*
 * A类不可以继承Demo类
 */
//class A extends Demo {
//
//}

public class FinalDemo {
	public static void main(String[] args) {
//		Demo d=new Demo();
//		d.show2();
		System.out.println(Demo.PI);
	}
}


package day04;
/*
 * 当多个类中出现了相同的功能,但是功能的主体不同
 * 这时可以进行向上抽取,这时,只抽取功能的定义,而不抽取功能的主体
 * 
 * 抽象;看不懂
 * 
 * 抽象类的特点:
 * 1、抽象方法一定在抽象类中
 * 2、抽象方法和抽象类都必须被abstract关键字修饰
 * 3、抽象类不可以用new创建对象,因为调用抽象方法没意义
 * 4、抽象类中的抽象方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用
 * 		如果子类只覆盖了父类部分抽象方法,那么该子类还是一个抽象类
 * 
 * 抽象类和一般类没有太大的不同
 * 该如何描述事物就如何描述事物,只不过该事物中出现了一些看不懂的东西
 * 这些不确定的东西也是该事物的功能,需要明确出来,但是无法定义主体。
 * 通过抽象方法来表示。
 * 
 * 抽象比一般类多了抽象方法,就是在类中定义抽象方法。
 * 抽象类不可以实例化。
 * 
 * 特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象
 * 
 * 
 */
abstract class Student01{
//	void study(){
//		System.out.println("all study*.*.*.*.*.*.*");
//	}
	abstract void study();
	void sleep(){
		System.out.println("一般的成员方法");
	}
}
class ChongCi extends Student01{
	void study(){
		System.out.println("ChongCi study......");
	}
}
class BaseStudent extends Student01{
	void study(){
		System.out.println("Base study......");
	}
}
class AdvStudent extends Student01{
	void study(){
		System.out.println("Adv study*******");
	}
}
public class AbstractDemo {
	public static void main(String [] args){
		BaseStudent bs=new BaseStudent();
		bs.study();
		new AdvStudent().study();	//匿名对象
	}
}


package day04;
/*
 * 假如我们再开发一个系统时对员工进行建模,员工包含3个属性
 * 姓名,工号,以及工资。经理也是员工,除了含有员工的属性外,另外还有一个奖金属性
 * 。请使用继承的思想设计出员工类和经理类,要求类中提供必要的方法进行属性的访问
 * 
 * 
 * 员工类:name  id  pay
 * 经理类:继承了员工   并有自己特有的bonus
 * 
 */

abstract class Employee{
	private String name;
	private String id;
	private double pay;
	Employee(String name,String id,double pay){
		this.name=name;
		this.id=id;
		this.pay=pay;
	}
	public abstract void work();
}
class Manager extends Employee{
	private int bonus;
	Manager(String name,String id,double pay,int bonus){
		super(name,id,pay);
		this.bonus=bonus;
	}
	public void work(){
		System.out.println("Manager  work......");
	}
}
class Pro extends Employee{
	Pro(String name,String id,double pay){
		super(name,id,pay);
	}
	public void work(){
		System.out.println("Pro  work......");
	}
}

public class AbstractDemo1 {
	public static void main(String [] args){
		new Manager("a","d",2.0,5).work();
		new Pro("a","d",2.0).work();
	}
}


----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流!----------------------