Day09总结:
上午:
1、final核心字:
Eg:代码实现:
Class Fu
{
Final void method()
{
//访问低层代码
}
}
Class Zi extends Fu
{
Void method()
{
Sop("haha");
}
}
以上代码体现出继承弊端,由于父类method办法访问了系统低层代码。当子类对其覆写,就不会去访问父类meth办法,直接用自己method这样就浮现了代码不严谨性,因此此时需要用final核心字进行修饰。
注意为什么不把类加final修饰,由于也许该类中会浮现诸多功能。有些是不需要被覆写。有些是被调用。因此只能依照自己所需对相应成员进行修饰。
2、Final特点:
1、final是一种修饰符,可以修饰类、办法、变量(成员变量、局部变量)
2、Final修饰类不可以被继承。
3、Final修饰办法不可以被覆盖。
4、Final修饰变量是一种常量,只能被赋值一次。是为了增强阅读性,只要数据是固定,就将这个数据用一种名称来表达,并用final修饰。常量名称都是大写字母,各种单词构成时用下划线来分隔。
代码体现:
Eg:
Class Zi
{
Static final int num=90;
/
/必要对变量进行初始化,不懂得要最后化哪个值,因此必要对它进行初始化。加静态也是同样,同样道理,并且被初始化,此时静态和final没有必然联系。当变量被final 修饰时,阐明变量已经是一种常量值,此时不能被修饰,可以用static来修饰。
Public stati double PI=3.14;
Void method()
{
Final int x=4;
X=8;
Sop(num);//既然是在操作一种固定值。为什么不把4直接写在此处,如果这样做话,阅读性极差,你主线就不懂得它所代表什么?为了增强阅读性,此时数据是不变化,因此咱们需要给它起个名字,并且用final来修饰。这样话它也是固定不变。
注意:被final修饰数值只能被覆写一次,并且修饰常量名所有大写,各种单词构成时用下划线进行分隔。Eg:final int PERSON_AGE=4;
}
}
3、抽象类:
特点:
1、没有办法体办法,称为抽象办法,必要存储在抽象办法类中,抽象办法和抽象类必
要用abstract核心字来修饰,
2、抽象类不可以被实例化,为什么?由于调用抽象办法没故意义?为什么?由于它连
办法体都不存在?
3、抽象类必要由其子类将抽象类中抽象办法都覆盖后,其子类才可以被实例化,否则
该子类还是抽象类。
Eg:
Abstract class Demo
{
Abstract void show();
}
Class SubDemo extends Demo
Void show(){}
//此时把父类中抽象办法覆盖,此时才干被实例化。
}
例如水果,它就是抽象,不详细它包括各种各样水果,每种水果有它自己体现。
抽象类涉及问题?
1、抽象类中与否可以定义非抽象办法?
可以一方面抽象类是一种类,类是用来描述事物,只但是描述事物过程中有些信息不详细,抽象类和普通类异同点:
相似:抽象类和普通类都用于描述事物,都可以定义成员。
不同:抽象类中可以定义抽象成员函数,(抽象要么修饰类要么修饰函数)而普通类不培训机构出来的程序员真的强吗
可以。
抽象类不可以实例化,普通类可以实例化。
2、抽象类中与否有构造函数?
有,并且抽象类虽然自身不可以被实例化,但是其子类覆盖了所有抽象办法后,是可以实例化。因此抽象类构造函数是用于给其子类对象进行实例化。
3、抽象类普通都是一种父类?
是、由于需要子类去覆盖父类中抽象办法。
代码体现:
Abstract class Demo{
Abstract voif show1();
Abstract void show2();
}
Abstract class SubDemo extends Demo
{
Void show1();
}
Class Test extends SubDmeo
{
Void show2();
}
4、抽象类中可不可以不定义抽象办法?
可以;看上去没有什么意义,其实有点意义,就是不让这个类创立对象,为什么不让创立?
代码体现:
interface InterTest//这是一种测试接口,有4种测试方式。
{
void test1();
void test2();
void test3();
void test4();
}
abstract class InterTestImpl implements InterTest//用这个类进行所有空实现。但是创立对象是毫无意义。因此用抽象。
{
public void test1(){}
public void test2(){}
public void test3(){}
public void test4(){}
}
class Test2 extends InterTestImpl
{
public void test2(){}
}
class Test3 extends InterTestImpl
{
public void test3(){}
}
/*
class InterTestImpl implements InterTest
{

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。