构造方法 (易错点):
public class Demo1{
public void fun1(){
public void fun2(){
//
public int a //不能定义变量
int a;//可以定义局部变量
}
}
}
不能在方法内部定义方法,变量
public double fun3(){
double height = 1.2;
double weight =2.4;
return height,weight;//错误
//method 1
double height = 1.2;
double weight =2.4;
double rs = new double[2];
double[0] = h;
double[1] = w;
return rs;
}
//method 2
// 将多个数据封装成一个类,调用类
public class person(){
double height = 1.2;
double weight =2.4;
String name = "张三";
Person p = new Person();
p.height = height;
p.weight = weight;
p.name = name;
return p;
}
方法的重写:(override)
子类对父类某个方法的实现(方法体)不满意,子类可以重写父类的方法(方法体),也可以是父辈类
特征:
子类重写父
方法的方法名,参数列表与父类被重写的一样
子类重写方法修饰符与父类修饰符一样或者比他大
子类重写的返回值类型与父类一样。
被重写方法的调用:
子类实例调用被重写方法,调用自己的重写的方法
方法重载:(overload):
public int add(int num1, int num2){ return num1+num2; } public double add(double num1, double num2){ return num1+num2; } public long add(long num1, long num2){ return num1+num2; }
在同一个类中,方法名一样,参数列表不一样的一组方法
参数列表异:
参数个数不一样
对应位置的参数数据类型不一样
public int add(int num1, int num2){ return num1+num2; } public double add(int num3, int num4){ return num3+num4;
重在看形参的类型
public int add(int num1, double num2){ return num1+num2; } public double add(double num1, int num2){ return num1+num2;
对应位置的形参以改变所以成立
方法重载与返回值类型无关
作用:
具有相同功能的一组方法,取相同的方法名,便于开发者取方法名,调用者更好的调用,只需记住一个方法名。
jdk 不能同时存在相同的两个方法,是否是相同的方法
jdk判断步骤:
方法名不一样,一定不同
方法名相同,参数列表不同即为重载
重写与重载的区别:
1.重写是子类重写父类的方法,重载是定义相同的方法名,但是参数不同;
2. 重载是在一个类中,重写则是子与父之间;
3.重载是编译的多态性,重写是运行时的多态性;
4.重载对修饰范围无要求,而重写的子类修饰范围必须大于等于被重写的方法的修饰范围。
构造方法/器:
作用:创建对象(主),也可以对对象的属性进行初始化操作。
要求:
方法名与类名一样
无返回值一说
public class Student{ String name; int age; } //无参 public Student(){ System.out.println("这是一个无参构造器"); } //有参 public Student(String str){ System.out.println("这是一个有参构造器"); } //调用 public static void main(String[] args){ Student stu = new Student(); }
调用构造器:返回创建类的对象
通过new 关键字调用
若一个类没有手动编写构造方法,jvm虚拟机就会为该类创造一个无参的空方法体
this关键字:
this代表本类的关键字,谁调用就是谁
this作用:
this.属性名 调用属性
this.方法名 调用本类方法
static关键字:
-
静态属性
-
静态方法
-
静态代码块
语法: static{ //代码块 }
是在所在类的被加载到内存时候,就会自动
静态方法的调用:直接使用类名.静态方法名
public void main(String[] args){ } public static void main(){ }
advantage:调用简单
disadvantage:无法使用非静态资源
static修饰的 ,不会被gc 回收
使用场景:工具类
包:package
在java 中使用包对类进行分类,在文件系统中就是一个文件夹
包名:公司域名反写
包使用''.''来进行分割
com.baidu: Baidu是com 的子包
src:只是Java资源存放的文件夹
idea包名不能使用关键字
包也有子包
import关键字:
当A类使用B类,若B与A类位于同一包下,直接使用B类
如果类位于java.lang包下所有的类,我们的类就不需要
一个子类只能直接继承一个父类
Java的单继承 ,支持多层继承
子类对象实例化过程:
初始化父类的属性
去调用父类的构造方法
初始化子类的属性
执行子类的构造方法
super关键字:
super 表示父类的对象,this表示本类对象
super.属性:调用父类属性,无法使用,
super.方法:调用父类的方法
super([参数]):调用父类的构造方法,
super()注意事项:
只能在子类的构造方法内
this()和super()同时存在
只能在子类构造方法的第一行
如果子类构造方法没有写,jvm隐式自动加super()