Java面向对象

类和对象:

局部变量:

  • 定义在函数、static块、for循环等中的变量;
  • 没有默认值,不给赋值用的时候会报错;

成员变量(属性):

  • 创建对象以后分配内存空间
  • 有默认值:int = 0,String = null, char = ‘’, float = 0.0, boolean = false;

注意:特定情况下,包含get和set方法的成员变量才叫属性,但一般情况下成员变量就是属性。

成员方法:

创建对象之后才会分配内存空间

对象:

Card c = new Card();
对象名中存放的是对象的引用(对象所在内存的地址);

标志符:

  • 类名、变量名、方法名、数组名
  • 类名首字母大学,方法名首字母小写并且驼峰命名

方法重载:

  • 在同一个类中,方法名相同,参数列表不同(参数个数不同或参数类型不同)。
  • 与返回类型无关,可以相同也可以不同。

方法重写(方法覆盖):

  • 存在于父子类中,方法名相同,参数列表也相同
  • 子类重写方法,不能直接调用父类属性
  • 调用父类中被覆盖的方法:super.print();

多态:

  • 就是多种形态
  • 指Java程序中一个类或多个类中可以定义多个同名方法,这多个同名方法完成的操作不同
  • 静态多态(编译时多态):通过方法重载实现的
  • 动态多态(运行时多态):通过方法覆盖实现的

访问控制符:

类的访问控制符:

  • public:该类可以访问不同包中的类
  • default:class前面什么都不加,该类只能访问同一个包中的类

类中的属性和方法的访问控制符:

  • default:在不同包中,不可以该属性或方法
  • protected:在同一包中可以访问该属性或方法,在不同包的子类中,可以访问该属性或方法,但是在main方法中不能访问
  • public
  • private

静态:

静态变量(类变量):

  • static int money = 5000;
  • 静态变量所有对象共用一份
  • 可以被类名或者对象调用
  • 如果对象改变其值,那么在所有对象中其值都会改变。
  • 在第一次使用类的时候就会分配内存空间。(类代码加载完毕就分配内存空间)
  • 类代码加载:使用类中的方法或变量或创建对象的时候加载

静态方法:

  • static void print(){}
  • 可以用类名访问
  • 不能访问成员变量,可以访问静态变量
  • 在类代码加载完毕分配内存空间

静态块:

  • static{}
  • 在类代码加载完毕,调用类中的方法或变量之前调用(包括静态变量、静态方法)
  • 用于初始化

继承:

  • extends
  • 子类拥有父类所有的非私有的属性和方法
  • 一个子类只能继承一个父类
  • 子类构造函数默认调用父类无参构造函数,来创建父类对象
  • 父类如果没有无参构造函数,手动调用父类有参构造函数->super(name)

上转型变量:

  • 子类对象赋给父类引用
  • 变量分为两种:值类型(存放的是值)、引用类型(存放的是地址)
  • 上转型变量的特点:
    可以访问从父类继承下来的属性和方法
    不可以访问子类特有的属性和方法
    如果子类将父类的方法重写了,则访问重写后的
    父类引用可以强转成子类引用类型

随机数:

  • java.util.Random
    Random random = new Random();
    int num = random.nextInt(4);//0-3随机数
  • java.lang.Math
    int num = (int)(Math.random() * 10 ) % 4;//0-3随机数
    解释:Math.random在0-1之间
    Math.random * 10在0-10之间
    ( Math.random * 10) % 4余数为0-3

抽象类:

  • 含有抽象方法的类
  • 可以有非抽象方法和属性
  • 抽象类不能实例化对象,只能通过子类重写抽象方法(也叫做方法实现)来实例化对象
  • public abstract class Animal{}
  • public abstract void sing();

接口:

  • 一个类可以实现多个接口,用逗号隔开
  • 一个类如果既有继承又有实现,则先继承后实现
  • pubic interface ICatch{}
  • 接口中可以有静态常量:
    public static final int a = 3;
    等价于 int a = 3;(public static final可省略)
  • 接口中的方法都是 public abstract 方法,其中public abstract可省略
  • 接口类型引用可以指向实现类对象:ICatch iCatch = new Dog();
  • 接口可以继承接口

final关键字:

  • public static final int a = 3;//修饰变量,变量值不能被修改,成为一个常量
  • 修饰方法,方法不能被重写
  • 修饰类,类不能被继承

异常:

  • finally{}永远都执行,哪怕前面有return

自定义异常:

  • public class MyException extends Exception{}
  • 手动抛出异常:
try {
	if(age < 0) {
		 throw new MyException();
	}
} catch (MyException e) {
		System.out.println(e.getMessage());
	}
  • 方法抛异常:
public void checkAge(int age) throws MyException{
	if(age < 0){
		throw new MyException();
	}
}
try {
	person.checkAge(-5);
} catch (MyException e) {
	e.printStackTrace();
}

内部类

  • 不允许定义静态变量,但可以定义 final static常量
  • 外部类只能通过创建内部类的对象来访问内部类
  • 内部类可以直接访问外部类:outname = “out”; 或 OuterClass.this.outname = “out”;
  • 在外部类外访问内部类:
OuterClass outerClass = new OuterClass();
OuterClass.InnerClass innerClass = outerClass.new InnerClass();
innerClass.innerFun();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值