继承
2015-07-13 22:53
211 查看
继承是子类通过继承关系获取父类的所有非私有权限的属性和方法
继承的关键字是extends和implements
extends关键字用于继承普通类与抽象类,implements关键字用于继承接口(其中接口可以被多个同时继承,而普通类与抽象类只能被继承一个,但是继承具有传递性)
例如:
public class Student {} //定义一个普通类
public abstract class Teacher{}//定义一个抽象类
public interface Common{}//定义一个接口类
public class Student extends Teacher{}//继承抽象类,抽象类中如果有抽象函数,那就必须将抽象函数重写(子类的方法名、参数、返回值必须和父类继承过来的方法一致,方法体不一样)
public class Student implements Common{}//继承接口类,接口类中的所有抽象函数都必须重写
自动转型是在继承下完成的,自动转型是指子类对象自动转型为父类类型转型后的对象,如果子类重写了父类方法,则执行的仍然是重写后的
多态是指同一个类型的对象,调用同一个方法,但是执行过程不一样,则为多态
构造函数 访问权限 类名(){}//作用:用来构造对象
//特征:创建对象的时候执行,构造器有返回的值,返回的是对象在内存中的地址
一个类中没有定义构造函数的情况下,系统会自动生成一个无参的构造函数,而若自己建立一个有参数的构造函数的情况下,创建的对象就必须是有参数的构造函数而若自己定义了有参数和无参数的两个构造函数,则可以创建这两个构造函数的对象
例如:
1:public class Student{
Student stu=new Student();//创建对象
}
2:public class Student{
public Student(string a){
}
Student stu=new Student();//错误的,因为自己写了构造函数的情况下系统将不会自动生成构造函数
Student stu1=new Student("aa");//正确的
}
3:public class Student{
public Student(){}
public Student(int a){}
Student stu=new Stduent();//正确的
Student stu1=new Student(2);//正确的
}
方法重载:条件:1:必须在一个类中
2:方法名相同
3:参数类型,参数个数,参数顺序不一样的方法互为重载方法
关于构造函数的重载,必须是有参数的,但是在重载的条件下要用到无参数的构造函数来创建对象,那么必须重新构建一个无参数的构造函数
关于界面代码的重构重写:引用传递,构造方法传参数,this代表一个对象,当前类的对象(要用到继承,直接调用,当用到this 的地方,this可以省略)
例如:
public class Draw extends JButton{//Draw继承了jbutton,所以在函数jbutton里面可以不用定义一个JButton的对象就可以this即可,而this其实也是一个对象,是d1
public static void main(String[] args){
Draw d1=new Draw();
d1.jbutton();
}
public void jbutton(){
this.setSize(20,20);//this可以省略
this.setTitle("按钮");//this可以省略
}
}
继承的关键字是extends和implements
extends关键字用于继承普通类与抽象类,implements关键字用于继承接口(其中接口可以被多个同时继承,而普通类与抽象类只能被继承一个,但是继承具有传递性)
例如:
public class Student {} //定义一个普通类
public abstract class Teacher{}//定义一个抽象类
public interface Common{}//定义一个接口类
public class Student extends Teacher{}//继承抽象类,抽象类中如果有抽象函数,那就必须将抽象函数重写(子类的方法名、参数、返回值必须和父类继承过来的方法一致,方法体不一样)
public class Student implements Common{}//继承接口类,接口类中的所有抽象函数都必须重写
自动转型是在继承下完成的,自动转型是指子类对象自动转型为父类类型转型后的对象,如果子类重写了父类方法,则执行的仍然是重写后的
多态是指同一个类型的对象,调用同一个方法,但是执行过程不一样,则为多态
构造函数 访问权限 类名(){}//作用:用来构造对象
//特征:创建对象的时候执行,构造器有返回的值,返回的是对象在内存中的地址
一个类中没有定义构造函数的情况下,系统会自动生成一个无参的构造函数,而若自己建立一个有参数的构造函数的情况下,创建的对象就必须是有参数的构造函数而若自己定义了有参数和无参数的两个构造函数,则可以创建这两个构造函数的对象
例如:
1:public class Student{
Student stu=new Student();//创建对象
}
2:public class Student{
public Student(string a){
}
Student stu=new Student();//错误的,因为自己写了构造函数的情况下系统将不会自动生成构造函数
Student stu1=new Student("aa");//正确的
}
3:public class Student{
public Student(){}
public Student(int a){}
Student stu=new Stduent();//正确的
Student stu1=new Student(2);//正确的
}
方法重载:条件:1:必须在一个类中
2:方法名相同
3:参数类型,参数个数,参数顺序不一样的方法互为重载方法
关于构造函数的重载,必须是有参数的,但是在重载的条件下要用到无参数的构造函数来创建对象,那么必须重新构建一个无参数的构造函数
关于界面代码的重构重写:引用传递,构造方法传参数,this代表一个对象,当前类的对象(要用到继承,直接调用,当用到this 的地方,this可以省略)
例如:
public class Draw extends JButton{//Draw继承了jbutton,所以在函数jbutton里面可以不用定义一个JButton的对象就可以this即可,而this其实也是一个对象,是d1
public static void main(String[] args){
Draw d1=new Draw();
d1.jbutton();
}
public void jbutton(){
this.setSize(20,20);//this可以省略
this.setTitle("按钮");//this可以省略
}
}
相关文章推荐
- 2015071301 - 烧烤模式
- Objective-C内存管理(三)set方法内存管理
- wamp 2.5 在zender studio 12.5中开启xDebug
- STM32学习--流水灯
- 关于C++内存中字节对齐问题的详细介绍
- shell中${}的妙用
- poj 1068 Parencodings 大模拟 水题 暑假第7题
- css3.0新增属性学习
- 陈嘉 2015/07/13 个人文档
- RHEL6 - 图形化设置IP
- jdk配置
- poj 2336 Ferry Loading II
- cocos2d.x单点触摸事件
- Android自定义圆形图片按钮
- iOS 笔记一: 对象创建、动态绑定、内审
- hdu 2000 ASCII码排序
- what's gradle wrapper
- 指针的本质---如何确定指针的类型
- Multiply Strings
- Android开发UI之布局文件LinearLayout