面向对象 部分知识点
面向对象 部分知识点
今天对很多人来说是一个非常重要的日子——七夕。作为一个有尊严的单身狗,我决定复习面向对
象,在学习的海洋中找到我真正的归属,有一些小知识点希望可以和众多单身狗分享。
这是一个图骗
java中,
类 :一个代码的载体,一个数据类型 一个图纸
对象: 某个类在内存中存在的个体/实例/对象
public static void main(String[] args){
Beauty b = new Beauty();
b1.add(2);
int sum = b1.add2(2,3);
}
public class Beauty{
//成员变量
String name;
int age;
public void add(int a){
System.out.println(a);
}
public int add2(int b,int c){
int c = a+b;
return c;
}
}
1.成员方法
格式:
访问修饰符(public) 修饰符 返回值类型 方法名(参数列表(形参:定义方法时的参数)){
方法
return xxx;
}
实参:实际使用
main方法:一种特殊的方法
构造方法:方法名和类名一样,没有返回值类型,void也不写
作用:构建创造对象 和new一起使用
类中无手写方法,提供无参构造 手写有参构造方法 无参不提供
构造参数 为成员变量赋值的参数
方法的重载:同一个类中,方法名一致,参数列表不一致的重名方法现象。
方法的重写:返回值、方法名、参数列表必须与父类一致,访问修饰符要大于等于父类。
public class Beauty {
//成员变量;
String name;
int age;
//打印你是单身狗;
public void print(){
System.out.println("你是单身狗");
}
//计算指定两个整数的和并打印;
public void add2int(int a,int b){
System.out.println(a+b);
}
//计算指定两个整数的和并把结果返回;
public int add2(int a,int b){
int c = a+b;
return c;
}
//设计方法: 计算指定的一个整数和一个double小数的和 并返回结果
public double add21(int a,double b){
double c = a+b;
return c;
}
//设计方法: 计算指定的一个double小数和一个整数的和 并返回结果
public double add21(double a,int b){
double c = a+b;
return c;
}
//设计方法: 打印指定的一句话 并循环打印10次.
public void print10(String Str){
for(int i = 1;i<=10;i++){
System.out.println(Str);
}
}
public void print20(Beauty be){
for (int i = 0; i < 10; i++) {
System.out.println(be.name);
}
}
}
继承关系中,子类的创建过程
- 父类先执行,子类后执行
- 构造代码块早于构造方法
2.this和super用法
1.this的两种用法:
1.使用this关键字,指代当前调用的方法
成员变量:堆里 对象空间里 生命周期跟随对象
方法里的变量(参数或方法内部声明的)是局部变量 生命周期跟随局部
类变量 类的一个属性 所有对象共享 生命周期跟随类 方法区
public class Worker{
String name;
public void show(String name){
System.out.println("方法的参数或方法里声明的名字是:"+name);//跳
//1.使用this关键字,指代当前调用的方法
System.out.println("worker的名字是:"+this.name);//唱
//在成员方法里,this指代当期对象(当前方法的调用者)
this.say();//this可以省略
}
public void rapper(){
System.out.println("篮球");
}
public static void main(String[] args){
Worker w = new Worker();
w.name = "唱";
w.show("跳");
}
}
2.this()指代本类中的其他构造方法,用在另外一个构造方法的首行
public Worker(String name,int age){
this.name = name;
this.age = age
}
public Worker(String name,int age,String sex,String display){
this(name,age);//调用上面的方法
this.sex = sex;
this.display = display;
}
2.super的两种用法
- 用在子类中,指代父类的引用
- 调用父类的构造方法 为成员变量初始化 这种用法要用在子类构造方法的首行
this和super不能同时存在
3.static 修饰符
可以修饰 方法/变量/类 表示 共享/静态的概念
1.修饰变量(类变量):
-
变量不出现在对象的堆空间中,该类所有对象公用这个变量
-
类本身所有 通过 静态时间 类名 方法名调用
-
跟随类.class文件一起进入方法区内存
局部变量:局部内的一个数据,生命周期跟随局部 栈;
成员变量:对象内的一个数据,生命周期跟随对象 堆;
类变量:类的一个属性,所有对象共享 生命周期跟随类 方法区;
2.修饰方法 :
-
静态方法内部 能调用本类的静态变量和静态方法 不能调用成员变量和方法(只能由对象来调用)
-
类中的构造代码块每new对象前都执行 且在构造方法前执行
-
静态代码块 只执行一次且最早 把程序一启动就需要的文件放在里面
public class Student {
//static修饰变量
static String projector = "单身狗";
String name;
int age;
String sex;
public void showSelf(){
System.out.println(this.name);
}
//static修饰方法
public static void showSome(){
System.out.println(Student.projector);
System.out.println("hh");
}
public static void main(String[] args){
Student s1 = new Student();
System.out.println(Student.projector);
System.out.println(s1.projector);
}
}
看完面向之后,是不是感觉自己可以找到对象了?不可能哒,不要天真了!!!