黑马程序员技术交流社区
标题:
抽象类和私有化的类有什么区别
[打印本页]
作者:
刘.伟
时间:
2013-3-22 17:06
标题:
抽象类和私有化的类有什么区别
本帖最后由 刘.伟 于 2013-3-23 14:14 编辑
看到java.awt 包中的windowAdapte适配器是一个抽象类,但是它的成员函数都是非抽象的,它这样做的目的是为了不让该类创建对象,但是利用private WindowAdapter(){}不是可以达到相同的效果吗?
作者:
安鹏宇
时间:
2013-3-22 17:41
一个类加上 abstract不只代表它不能被new不能实例化
最重要是代表它是用来被其他类所继承的
私有化是指不能被别人直接访问,需要一个公共的访问窗口
私有化的方法不能被继承
private可以修饰变量、构造器,方法、内部类;在变量前面加private 表示类的私有属性,只可以在类内部访问使用;
只有内部类才能被私有化,外部类不能用private修饰
你说这两个没什么联系,更别提有什么区别了。。
作者:
王瑞
时间:
2013-3-22 17:42
本帖最后由 王瑞 于 2013-3-22 17:43 编辑
可以去看一下private关键字的使用,他是不能修饰类的。能修饰类的只有三个public final 和default(就是不写,默认的意思)
所以能达到不能创建对象的这个目的,就我现在学的知识面,貌似只能用到抽象类了
下面是我刚刚做的抽象类的学习日志,希望能给你帮助
4.7 抽象类
定义:
抽象就是从多个事物中将共性的,本质的内容抽取出来。
例如:狼和狗的共性都是犬科,犬科就是抽象出来的概念。
抽象类:
java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类
抽象类的由来:
多个对象都具备相同的功能,但是功能具体内容有所不同,那么在抽取过程中,只抽取了功能定义,并未抽取功能主体,那么只有功能声明,没有功能主体的方法称为抽象方法。
当多个类中出现相同功能,但是功能主体不同,这时可以进行向上抽取。这时,只抽取功能定义,而不抽取功能主体。
(函数有两部分:函数声明和函数主体)
抽象类的的特点:
1,抽象方法一定在抽象类中。
2,抽象方法和抽象类都必须被abstract关键字修饰。
3,抽象类不可以用new创建对象。因为调用抽象方法没意义。(因为抽象方法没有主体)
4,抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。
格式:
abstract class Student
{
abstract final void study();
}
用abstract修饰类名,然后再在要被抽象的方法前加abstract,因为只用声明,没有主体,函数的结束语句不是}就是;,没有主体所以在最后加上一个;。
抽象方法一定在抽象类中。
new Student()这样的语句是错误,因为Student类是个抽象类,没有对象无法调用,但是如果这样new Student().study()是可以的,因为study是个方法,匿名函数可以调用一次,虽然里面没有内容,但是是可以执行的。
演示代码:
abstract class Student
{
abstract void study();
abstract void study1();
}
class BaseStudent extends Student
{
void study()
{
System.out.println("base study");
// bstract void study1();//继承Student,所以默认他还有另外一个函数语句abstract void study1();如果想不让子类是抽象的,必须重写父类中的所用方法才行。
}
}
当BaseStudent继承Student的时候,因为子类BaseStudent只重写了一个方法study(),又因为他继承Student,所以默认他还有另外一个函数语句abstract void study1();又因为抽象方法一定在抽象类中,所以这个部分继承抽象父类的子类也必须是抽象的。如果想不让子类是抽象的,必须重写父类中的所用方法才行。
作者:
刘.伟
时间:
2013-3-23 08:45
明白了,谢谢
作者:
黄玉昆
时间:
2013-3-23 13:03
刘.伟 发表于 2013-3-23 08:45
明白了,谢谢
如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2