前言
欢迎来到我的博客
个人主页:北岭敲键盘的荒漠猫-优快云博客
面向对象基本也就那些东西,感觉每次学都一大片相同的东西
这篇博客专门整理Java的面向对象语法。
对新手极不友好,对老手极其友好。
类声明
语法:
[修饰符] class 类名{
//属性声明
修饰符 数据类型 变量名 = [初始值];
//构造器
修饰符 构造器(参数){
构造器代码
}
//方法定义
修饰符 返回值类型 方法名(参数){
方法代码
}
}
案例:
public class Student {
// 属性声明
public int age = 18;
// 构造器
public Student() {
System.out.println("类实例化成功");
}
// 方法定义
public void putout() {
System.out.println("我输出了内容");
}
}
构造器简介
这个就类似于python的init,php的魔术方法。
他会在实例化的那一刻执行。
构造器必须跟类名相同
与python和php不同的是他可以有多个构造器。(归功于重载)
但是构造器的参数数量不能相同。
实例化的时候传入几个参数,就执行有几个参数的构造器。
类对象的使用
实例化:
//变量声明
类名 变量;
//实例化对象
变量 = new 构造器(参数);
//变量声明
Student zhangsan;
//实例化对象
zhangsan = new Student();
属性与方法的使用:
//属性赋值
对象.属性 = 内容;
//方法调用
对象.方法();
//属性赋值
zhangsan.age = 15;
//方法调用
zhangsan.putout();
重载
即,方法名相同,但是参数的类型,数量不同也是可以的。
对方调用的时候,给的什么参数,就会执行什么方法。
常用关键字
this关键字
跟php一样,对标python的self。
this.属性
super关键字
用于调用父类的方法和属性。
super.父类属性;
super.父类方法();
super(参数)//执行父类构造器
final关键字
修饰的方法不能被继承,重写,重新赋值。
修饰的类不能被继承。
static关键字
不允许用this访问自身。
其他地方可以直接用类.方法或者类.属性直接使用
(像函数一样)
封装属性
修饰符:
private:只能在当前类中访问
default:在同一个包中的类可以访问,是默认权限
protected:主要在继承中使用,可以被子类访问
public:任何地方的类都可以使用
继承属性
语法:
修饰符 class 类名 extends 父类名{
内容
}
补充:
Java只能继承一个父类,而且不能继承构造器。
多态属性
方法重写:
直接重新写父类方法就能给父类的覆盖了。
抽象类
别的语言没遇到过,特述一下:
代码层面:就是无法实例化的类,可以被继承,但是无法实例化。
举例说明:
我们假设一个类群用来绘图动物。类中描绘动物的细节。
我们能描绘出狗,猫,兔子。
但是我们无法描绘出他们的父类:动物。
所以动物就可以用抽象类表述。
abstract来定义修饰。
public abstract class Animal {
int age;
abstract public void eat();
abstract public void run();
}