黑马程序员_java_final_abstract_interface_main_变量_覆盖_private_静态

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、


期待与您交流! ----------


一、final修饰符
final : 最终,作为一个修饰符
1,可以修饰类,函数,变量。
2,被final修饰的类不可以被继承,为了避免被继承,被子类复写功能。
3,被final修饰的方法不可以被复写
4,被final修饰的变量是一个常量只能赋值一次,既可以修饰成员变量。也可   以修饰局部变量。    当在描述事物时,一些数据的出现值是固定的。那  


 么这时w为了增强阅读性,都给这些值取个名字,方便于阅读。而这个值不   需要改变。所以加上final修饰。作为常量:常量的书写规范所有字母都大   写。如


果由多个单词组成。单词通过下划线(_)连接。
5,内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变   量。






二、abstract
当多个类中出现相同功能。但是功能主题不同
这时可以进行向上抽取。这时,只抽取功能定义,而不抽取功能主题


抽象类的特定:
1,抽象方法一定定义在抽象类中。
2,抽象方法和抽象类都必须被abstract关键字修饰。
3,抽象类不可以用new创建对象。因为抽象方法没意义。
4,抽象方法没有方法体
5,抽象类中的抽象方法要被使用,必须由子类写所有的抽象方法后,建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类




抽象类比一般类多了个抽象函数,就是在类中可以定义抽象方法
抽象类不可以实例化


特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。
示例代码:


abstract class GetTime{
 public final void getTime(){
  lang start = System.currentTimeMillis();
   runcode();
  lang end = System.currentTimeMillis();
  System.out.println((end-start)+"毫秒");
  
}
 public abstract void runcode();
}


class SubTime extends GetTime{
 public void runcode(){
 for(int i = 0;i<1000;i++){
  System.out.print(i);
}
}
}


public class Test{
 public static void main(String args []){
  Test s = new Test();
  s.getTime();
}
}





三、interface
class用于定义类
interface用于定义接口


接口定义是,格式特点:
1,接口中常见定义:常量,抽象方法。
2,接口中的成员都有固定修饰符。
常量:public static final
方法:public abstract
记住:接口中的成员都是public的。




接口:是不可以创建对象的。因为有抽象方法。
需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化。
否则子类是一个抽象类


接口可以被类多实现。也是对多继承不支持的转换形式。java支持多实现。


java中类、接口和抽象类之间的关系。
类与类是继承关系
类与接口是实现关系
接口与接口是继承关系


Java中在接口的应用中,要注意一下几点:
<1>接口一般定义的是常量和一些抽象方法。抽象类中可以包含抽象方法,也可以有非抽象方法,但是有抽象方法的类一定是抽象类。抽象方法不能有方法体。
<2>在引用接口时,接口的引用指向实现的对象,尽量定义为接口或父类的引用。这其中有可能用到多态的知识。引用接口用implements。
<3>接口(interface)只能定义抽象方法而且默认为是Public。常量是public static final 修饰的
<4>通过implements来引用接口。例:Class runnrtmp inplements runner.
<5>多个无关类可以实现一个接口,!!!!接口的引用指向实现的对象。
<6>一个类可以实现多个无关的接口(这点和继承要有所区别)
<7>和继承一样,接口与实现类之间存在多态性。
<8>接口可以继承其他的接口,并添加新的属性和抽象方法。
<9>在类中实现接口的方法时必须加上public修饰符






四、main


public static void main(String[] args)


主函数:是一个特殊的函数。作为程序的入口。可以被JVM调用


主函数的定义:
public:代表着该函数访问权限是最大的。
static:代表主函数随着类的加载就已经存在了。
void:主函数没有具体的返回值。
main:不是关键字,但是是一个特殊的单词,可以被JVM识别。
(String[] args):函数的参数。参数类型是一个数组。该数组中的元素是字符串。字符串类型的数组。


主函数是固定格式的:JVM识别。


JVM在调用主函数时,传入的是new String[0];




五、成员变量和局部变量


成员变量和局部变量
作用范围
成员变量作用于整个类中
局部变量作用于函数中。或者语句中
在内存中的位置;
成员变量。在堆内存中。因为对象的存在,才在内存中存在。
局部变量:存在栈内存中


六、覆盖


2.子父类中的函数。


当子类出现和父类一模一样的函数是,
当子类对象调用该函数。会运行子类函数的美容。
如同父类的函数被覆盖一样。


这种情况是函数的另一个特性:重写(覆盖);


当子类继承父类。沿袭了父类的功能,到子类中。
但是子类虽具备该功能,但是功能的内容却和父类中的不一致
这时,没有必要定义新功能,而是使用覆盖特性,保留父类的功能定义,并重写功能内容。


覆盖的注意事项:
1,子类覆盖父类,必须保证子类权限大于等于父类权限。否则编译失败。
2,静态只能覆盖静态。


大家记住了:
重载:只看函数的参数列表。
重写:子父类要一模一样




七、private


private:私有,权限修饰符:用于修饰类中的成员(成员变量,成员函数).
私有化的数据只在本类中有效。
将成员变量私有化以后。类以外技术建立了对象也不能直接访问。
   需要注意的是:私有仅仅只是封装的一种表现形式。
之所以队伍提供访问方式。就以为可以在访问方式中加入逻辑判断等语句。
对访问的数据进行操作。提高代码健壮性。




八、静态


静态:static
用法:是一个修饰符,用于修饰成员(成员变量和成员函数)
当成员被静态修饰后。就多了一个调用方式,除了可以被对象调用外,
还可以直接被类名调用,类名。静态成员


static特点:
1,随着类的加载而加载
也就是说:静态会随着类的消失而消失,说明它的生命周期最长。
2,优先于的对象存在
明确一点:静态是先存在,对象是后存在的。
3,被所有对象所共享
4,可以直接被类名所调用。


实例变量和类变量的区别:
1,存放位置。
类变量(静态的成员变量)随着类的加载而存在于方法区中。
实例变量(非静态成员变量)随着对象的建立而存在于堆内存中。
2生命周期:
类变量的生命周期最长,随着类的消失而消失。
实例变量生命周期随着对象的消失而消失


静态的注意事项:
1,静态方法只能访问静态成员
非静态方法既可以访问静态也可以访问非静态
2,静态方法中不可以定义this、super关键字。
因为静态优先于对象存在,所以静态方法中不可以出现this。
3,主函数是静态的


静态有利有弊
利处:对对象的共享进行单独空间的存储,节省空间。没有必要每一个对象中 都存储一份。
可以直接被类名调用。
弊端:生命周期过长。
访问出现局限性(静态虽好。但是只能访问静态)






什么时候使用静态?
要从两方面下手;
因为静态修饰的内容有成员变量和函数。
什么时候定义静态变量(类变量)呢?
当对象中出现共享数据时,该数据被静态所修饰。
对象中的特有数据要定义成非静态存在于堆内存中。




什么时候定义静态函数呢?


当功能内部没有访问到非静态数据(对象的特有数据)。
那么该功能可以定义成静态的。






---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>、<a 


href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------


详细请查看:<a href="http://edu.csdn.net" target="blank">http://edu.csdn.net</a>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值