J2SE视频之面向对象
来源:互联网 发布:best video 软件 编辑:程序博客网 时间:2024/05/22 09:03
前言
面向对象是我们编程的基础,也是我们要追求的目标。面向对象,首先就是将对象抽象出来,对象通过属性和方法来分别对应事物所具有的静态属性(成员变量)和动态属性(方法)。
具体内容
构造函数(方法)
constructor
构造函数,和类同名,没有返回值。初始化成员变量,不加void,如果有父函数,先调用父函数构造函数,再调用子函数的构造函数。父类中须有无参构造函数。
class Worker {private String name;Worker(String name) {this.name = name;}public String getName(){return name;} }public class TakeCarePet {public static void main(String[] args) {Worker w1 = new Worker("David");System.out.println(w1.getName());}}
输出结果:David
重写/重载
overload
重载,放在一个类中。
1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float),但是不能为fun(int, int));
2、不能重载只有返回值不同的方法名。因为返回值区分不出来。
3、存在于父类和子类、同类中。
4、不能通过访问权限、返回类型、抛出的异常进行重载;
overwrite(override)
重写。如果子类对继承父类的方法不满意,可以重写,当调用方法时会优先调用子类的方法。
特点:
1、方法名、参数、返回值相同。
2、子类方法不能缩小父类方法的访问权限。
3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
4、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;
关键字
this
1、this代表当前对象
this.属性:操作当前对象的属性
this.方法:调用当前对象的方法
2、封装对象的属性的时候,经常会使用this关键字。
实例程序:class Animal {public String name;Animal(String name) {this.name = name;}}
static
在一段程序中,适当加入一个Static的值,使其运算后自加一,可以当作计数器。
属于所有类;第一次使用时被初始化。
成员变量分布在datasegment中;
不需要new一个对象就可以访问。类名.成员变量就可以访问。
用static声明的方法为静态方法,在调用时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。
静态方法不再是针对某个对象的调用,所以不能访问非静态成员。
静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
实例程序:public class Cat { private static int sid = 0; private String name; int id; Cat(String name) { this.name = name; id = sid++; } public void info(){ System.out.println ("My name is "+name+" No."+id); } public static void main(String arg[]){//赋值方式 Cat.sid = 100; Cat mimi = new Cat("mimi"); mimi.sid = 2000; Cat pipi = new Cat("pipi"); mimi.info(); pipi.info(); }}
Super 当前对象的父对象
super
在子类中使用。
子类的构造方法都会首先去执行父类的构造方法,默认访问无参构造方法
因为:每一个构造方法的第一行都有一条默认的super();语句
作用:用于子类访问父类数据的初始化,只有执行了父类的无参构造方法,才能访问父类的数据
注意:当父类没有无参构造方法时,子类的构造函数必须通过this和super关键字指定要访问的带参构造方法
格式:super(...)括号中的内容由带参构造方法的参数类型决定
this()——前提是:必须已经有一个子类用super访问了父类构造方法
实例程序:class Animal {public String name;Animal(String name) {this.name = name;}}class Cat extends Animal {public String eyesColor;Cat(String name,String eyesColor) {super(name);this.eyesColor = eyesColor;}}
final
final修饰类,该类不可以被继承
final修饰方法,该方法不能被重写。
final修饰属性,该类的初始化属性必须有值或在构造方法中赋值(只能选其一)
final修饰变量,该变量的值只能赋一次值,即变为常量。
实例程序:public class TestFinal {public static void main(String[] args) {T t = new T();}}final class T {final int i = 8;public final void m() {}}class TT extends T {}
内存分配
内存中分四块:
堆:对象生成时(属性)。
栈:局部变量
Code segment:方法。
Data segment:静态常量
访问控制
抽象类
abstract
含有抽象方法的类是抽象类。抽象方法只需声明,不需实现。
抽象类必须被继承。
抽象方法必须被重写。
抽象类不能被实例化。
interface
implements
特殊的抽象类,
所有的成员变量都是public static final。
所有的方法都是抽象的public的。
子接口可以extens父接口,而不去实现父接口中的方法。
子类implements接口后,必须实现接口中的方法。
子类可以即extends父类,同时implements接口1,接口2
接口和接口之间可以相互继承,
类和接口之间只能implements。
一个类可以实现多个接口。
接口的本质:内存中,可以看见其对象的一部分方法。
感受
- J2SE视频之面向对象
- J2SE之面向对象
- J2SE视频之面向对象——踏破铁鞋无觅处
- J2SE之面向对象编程
- J2SE之面向对象基础
- J2SE之重学面向对象
- J2SE-5 面向对象编程之关键字
- 面向对象---J2SE
- j2se再次面向对象
- 软件工程视频之面向对象
- C#视频之面向对象
- J2SE之面向对象——再看你一眼
- J2SE-4 面向对象编程之三大特征
- 【J2SE】——面向对象
- J2SE视频之初识Java
- Java初学(二)——J2SE之面向对象编程1(类和对象)
- J2SE面向对象的几点总结
- J2SE——面向对象总结
- 1184
- SpringAop实现原理
- CArray原理分析
- 有效处理 Java 异常三原则
- 永中文档DCS在线转换文件(代码示例)
- J2SE视频之面向对象
- 书写「简历」时,需要规避的错误
- python+django+sae
- 详解 equals() 方法和 hashCode() 方法
- 刚收到了Facebook的Offer,我是这样为面试做准备的
- top 执行一次、显示所有进程信息
- Java开发工程师的面试该用什么姿势?做到这些让你多拿5K
- Spring Boot & Spring MVC 异常处理的 N 种方法
- 普通程序员如何入门深度学习?