构造方法以及关键字

构造方法   (易错点):  

 public class Demo1{
  public void fun1(){
      public void fun2(){
          //
          public int a //不能定义变量
               int a;//可以定义局部变量
      }
  }
 }
  1. 不能在方法内部定义方法,变量

 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)

子类对父类某个方法的实现(方法体)不满意,子类可以重写父类的方法(方法体),也可以是父辈类

特征

  1. 子类重写父

  2. 方法的方法名,参数列表与父类被重写的一样

  3. 子类重写方法修饰符与父类修饰符一样或者比他大

  4. 子类重写的返回值类型与父类一样。

被重写方法的调用:

子类实例调用被重写方法,调用自己的重写的方法

方法重载:(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;
 }

在同一个类中,方法名一样,参数列表不一样的一组方法

参数列表异:

  1. 参数个数不一样

  2. 对应位置的参数数据类型不一样

     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. 方法名相同,参数列表不同即为重载

重写与重载的区别:

1.重写是子类重写父类的方法,重载是定义相同的方法名,但是参数不同;

2. 重载是在一个类中,重写则是子与父之间;

3.重载是编译的多态性,重写是运行时的多态性;

4.重载对修饰范围无要求,而重写的子类修饰范围必须大于等于被重写的方法的修饰范围。

构造方法/器:

作用:创建对象(主),也可以对对象的属性进行初始化操作。

要求:

  1. 方法名与类名一样

  2. 无返回值一说

 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作用:

  1. this.属性名 调用属性

  2. this.方法名 调用本类方法

static关键字:

  1. 静态属性

  2. 静态方法

  3. 静态代码块

    语法:
    
     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的单继承 ,支持多层继承

子类对象实例化过程:

  1. 初始化父类的属性

  2. 去调用父类的构造方法

  3. 初始化子类的属性

  4. 执行子类的构造方法

super关键字:

super 表示父类的对象,this表示本类对象

super.属性:调用父类属性,无法使用,

super.方法:调用父类的方法

super([参数]):调用父类的构造方法,

super()注意事项:

  1. 只能在子类的构造方法内

  2. this()和super()同时存在

  3. 只能在子类构造方法的第一行

  4. 如果子类构造方法没有写,jvm隐式自动加super()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值