面向对象编程的基础知识和注意事项

大纲:面向对象编程的基础知识和注意事项

  • 类和对象
  • 内存管理机制
  • 继承
  • 构造方法
  • 向上造型
  • 重写(与重载)
  • 抽象类和抽象方法
  • 静态(常量,静态方法)
  • 内部类和外部类

具体如下:

  • 类和对象

1,类的定义class:同一事物的统称,封装一类事物的属性和行为载体。通过类来生存对象,具有相同特性和行为的一类事物

对象object:

事物存在的实体:分静态特性(属性)int age,String name,String address 和动态部分(行为/方法)

对象是类的实例

符合某个定义所产生的实例

2,创建类和对象

public class Student { 
public static void main (String[] arg) {
    Student zd=new Student();
    }
}

注意new对象,会给所有成员变量赋值默认值。

  • 方法的签名和重载:

方法名+参数列表:void.show(int age){}

重载:同一类中,方法名相同,参数列表不同。

void show(int age){}与void show(int age,String name){}

注意与{} 返回值无关

主要便于用户的调用

  • 成员方法(函数):

分为四种:没有返回值类型void,没有传入参数;没有返回值,有传入参数(参数类型 参数名);

有返回值()没有传入参数();有返回值,有传入参数。

  • 构造方法(构造函数):

1,作用:给成员变量赋初始值

与类同名,没有返回值类型,连void都没有。new对象时自动调用这个构造方法。构造方法可以2,重载。

如Student (int age,String name){}

调用:Studeng ls=new Student(23,"fengjinjin");

  • this 关键字

需要注意成员变量和局部变量同名时使用。

int age;

String name;

Student (int age,String name){

this.age=age;

this.name=name;

}
  • 内存管理(以及内部机制,类加载)-面试重难点

堆:new出来的对象和成员变量都在堆中

栈:局部变量和方法中的参数

方法区:class 字节码文件,包括静态变量和所有方法

  • 继承:extends 

超类/父类(共同属性和行为)Seaobject,子类/派生类

派生类继承了超类的,就可以访问超类的行为方法和变量。反之不行。

如潜艇的width,height,x,y,speed变量都是一样共有行为

move 移动等也是共有行为,可以列在超类中。就可以代码复用。

class Seaobject{
int width;
int height;
int x;
int y;
int speed;
}
void move(){}

class obsersubmarine extends Seaobject{}
class mine extends Seaobject{}

派生类的构造方法,如果没有调用超类的构造方法,默认是super()调用。 

super :指代当前对象的超类对象

  • 向上造型

超类的引用指向派生类的对象。如 Seaobject sea=new Obsersubmarine();

引用类型是Seaobject,对象Obsersubmarine

  • 重写 override/overriding 

发生在父子类中,方法名相同,参数列表相同。重写方法被调用,看对象的类型。

void 和基本类型时候,必须相同;引用类型,必须小于或等于。

如:class Person{

student sayHi(){}

}

如下这种就是错误:class Teacher extends Person{

int sayHi(){} 

}

比如student sayHi(){} 就是正确。

派生类方法抛出的异常小于或等于超类。

另外还有派生类访问权限大于或等于超类。

权限:public(公开的)>protected受保护>默认>private 私人,本类

派生类方法的返回值小于或者等于超类方法。

注意:抽象方法 abstrac,必须同步修改类class。加abstract ,就是抽象类。方法必须重写 

  • 重写跟重载的区别

重写是父子类的同名、同参。重载就是同类的同名,不同参数。

  • final 最终的

跟修饰static final ,常量(必须大写DEAD) ,必须赋值=5,不能修改=8。final voidshow(){}修饰方法也不能重写。

final class Aoo{} 修饰类也不能被继承 extends

适用于一次赋值不变,多次被使用。

  • static 静态变量

属于类,存在着方法区的,只有一份。

通过类. 来访问 。一般是共享的音乐视频等

静态方法:也是属于类,存在方法区中,只有一份。

通过类.来访问

class Student{

int age;

static String name;

void sayHi(){

System.out.println(age);  //隐式this.age

System.out.println(Student.name)}

}
  • 静态块

属于类,在类被加载期间自动执行,因为一个类只能被加载一次,所以只执行一次。

  • 抽象方法,抽象类

abstract,class和方法前都必须加abstr,必须重写方法。

抽象方法的类也必须抽象abstract。

抽象类不能被new对象实例。

抽象类的意义:封装共有属性和行为。为派生类提供向上造型。为派生类制定规则,必须修改方法。

  • 内部类,外部类        

1,内部可以访问外部类。内部的也可以在外部类中创建new对象

class Aoo{

int a;

class Boo{

System.out.println(Aoo.a)}

}

里面有隐式的this Aoo.this.a

内部类都有独立的class字节码文件

2,匿名内部类

对象只被创建一次,可以使用。

匿名内部类不能修改外部局部变量的值,会默认final.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值