Java新手小白学习第四天笔记

1.内存的组成:
栈(局部变量)
堆:new 出来的对象
常量池:常量 ,静态static 资源===》相同的信息不创建第二个
方法区:

2.this关键字:
   代表当前自身对象。
   通过this[区分]同名的局部变量和成员变量
   this.属性
   this.成员方法();
   this(); 构造方法之间互相调用的使用。

3.static 静态的

  static 可以修饰属性----类变量;
  A.提前加载到内存中(常量池),静态资源只加载一次
      当前类下所有对象共用该静态资源
  B.静态 资源归类所拥有,所有在使用的时候,
     可以通过类名.静态资源

4.包:
   包的作用:
   1.分门别类进行功能代码的存储。
     java.util =====工具类。
     (特殊)java.lang
          String

      2. 区分同名类。
         java.sql.Date
         java.util.
      3. 项目中 不存在不在包里的类。

   使用包:
     1.创建包  new package
     2.命名包名:包名有小写字母组成;
                包之间的包含关系通过.来表示
                一般来说,包名都是项目部署后 访问域名的倒写。
     3.导包: import  包名.类名(全局限定名)

               import java.util.Arrays;
               import java.util.*;
               import static  java.lang.Math.*;
    
      4.【导包的时候】包之间没有包含关系
      /*import com.jr.Car;
      import com.jr.day2.Demo1;*/
      import com.jr.*; ===>import com.jr.Car;
                   --X--->import com.jr.day2.Demo1;

5. 代码块 :划分作用域
   分类:普通代码块  构造代码块  静态代码块  同步代码块

    执行顺序: 静态代码块》 构造代码块》普通代码块

6.面向对象的三大特征:封装  继承   多态
   封装----》安全
   数据的封装-----为了 数据的安全。
//"数据的封装:通过共有的方法,间接访问/操作 私有的属性"
    private int age;
    public void setAge(int age){
        if(age>0 && age<=100){
            this.age=age;
        }else{
            System.out.println("输入年龄不合理,已赋默认值");
            this.age=18;
        }
    }
    public int getAge(){
        return this.age;
    }

    补充说明:
    参与者类---->实体类:
    标准的实体类:
       1.属性私有化
       2.提供get/set方法 【身份证号属性特殊,只有get方法 】
       3.构造方法:无参和全参构造要有,
       4.成员方法

7.继承 ---是为了代码的重用
   继承的前提条件:
     具有相同的属性和共同行为 ,的一组对象。
     这样的类之间可以通过 继承实现代码的重用。

    继承: 学生 ,教师 ,员工
    不继承: 飞机 鸟  【虽然也有相同的属性和行为:重量,颜色,飞】

   A继承的实现步骤:
    1.找到多个类中相同的属性和行为,提取出来,放到单独的类里,
       这个单独的类,叫父类,超类,基类

    2.各个类中 特有的属性和行为,分别存放在各自的类里,
       这些各自的类 ,叫子类
    
    3.借助关键字 extends  实现继承(子类对象.父类资源)

   B.继承的特性: 单根性  传递性

       c
       B
       A

   C.继承有两种方式:
      隐式继承:  Object类(根基类)
      显式继承:类名 extends 父类

   D.子类不可以继承父类的哪些资源:
      构造方法不可以继承,但是子类可以调用。

   E.子类可以使用继承过来的哪些资源:
                  本类下  同包子类  不同包子类
      public       V        V        V
      protected    V        V        V
      默认的       V         V        X
      private      V        X        X

8.方法的重写:

    原因:继承过来的父类方法,不适合解决子类的问题,
          子类需要对该方法 做修改,这个修改行为就叫方法的重写。
    
    重写的概念:
       子类中,方法名相同,参数列表相同,返回值类型相同或缩小,
              访问修饰符相同或扩大  叫做重写。

9.介绍关键字 super:
  super指 父类对象。  VS   this 指 自身对象。
    子类中通过super区分同名父类属性:super.name;
    子类中通过super区分同名父类方法:super.getAge();
    子类中通过super()调用父类无参构造方法: super();
    子类中通过super(实参列表)调用父类有参构造方法: super(实参列表);


10.继承条件下,子类构造方法的执行顺序:
     A。先执行父类构造方法,在执行子类构造方法
        如果父类还有父类,找到顶级父类,在一层层向下执行构造方法。

     B.如果父类没有无参构造方法,要求子类必须手动调用父类的有参构造。
    
     C.如果父类有无参构造方法,开发者没有手动调用的话,程序会自动帮忙调用。

总结:【在子类的构造方法里,第一行必须是调用父类构造方法;
       可以手动调用有参或者无参;
       也可以程序帮忙调用无参
      】


11.抽象类
   原因:该类创建出来的对象,在程序中,没有存在的必要。
   操作步骤:设置该类为抽象类。
        public abstract class Person {

        }

   ====》自定义的父类,都设置为抽象父类。

12.抽象方法

  原因: 父类想要子类重写该方法,
        父类只需要把该方法设置为抽象方法即可。

  总结:但凡需要子类重写的方法,设置为抽象方法就可以了。

  补充:一个类如果 有抽象方法,那么该类一定是抽象类。
        但是一个类是抽象类,可以没有抽象方法。
  【
  做题思路:
   A.父类设置为抽象类
   B.如果所有的子类都对父类中的某一个行为进行了重写,
      那么该方法在父类中 需要设置为抽象方法。
  】

今天,学习了java的三大特性,练习的代码比较多

例一

        Bid类:

package com.jr.date723.bid;

public abstract class Bid {
    private String name;
    private String color;

    public Bid(String name) {
        this.name = name;
    }

    public Bid() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
    
    public abstract void fei();

    public abstract void eat();
}

麻雀类:

package com.jr.date723.bid;

public class MaQue extends Bid{


    public MaQue(String name) {
        super(name);
    }

    public MaQue() {
    }

    @Override
    public void fei() {
        System.out.println("我是"+getName()+"我动作敏捷,飞的比火箭快");
    }

    @Override
    public void eat() {
        System.out.println("我不仅吃种子,也吃害虫!");
    }
}

企鹅:

package com.jr.date723.bid;

public class QiE extends Bid{

    public QiE(String name) {
        super(name);
    }


    public QiE() {
    }

    public void yy(){
        System.out.println("虽然我很胖,但我比鱼游得快");
    }
    @Override
    public void fei() {
        System.out.println("我是"+getName()+"企鹅QQ,我太胖了,所以不会飞");
    }

    @Override
    public void eat() {
        System.out.println("我喜欢吃鱼");
    }
}

Test:

package com.jr.date723.bid;

public class Test {
    public static void main(String[] args) {
        MaQue maQue=new MaQue("麻雀嘟嘟");
        maQue.fei();
        maQue.eat();
        System.out.println("****************************");
        QiE qiE=new QiE("企鹅QQ");
        qiE.fei();
        qiE.eat();
        qiE.yy();
    }
}

例二:

汽车类:

package com.jr.date723.carzaoceshi;

public abstract class Car {
    private String chepai;
    private String chexing;
    private String color;
    private double rizujin;

    public Car(String chepai, String chexing, String color, double rizujin) {
        this.chepai = chepai;
        this.chexing = chexing;
        this.color = color;
        this.rizujin = rizujin;
    }

    public Car() {
    }

    public String getChepai() {
        return chepai;
    }

    public void setChepai(String chepai) {
        this.chepai = chepai;
    }

    public String getChexing() {
        return chexing;
    }

    public void setChexing(String chexing) {
        this.chexing = chexing;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public double getRizujin() {
        return rizujin;
    }

    public void setRizujin(int rizujin) {
        this.rizujin = rizujin;
    }

    public abstract void zuli();
}

轿车类:

package com.jr.date723.carzaoceshi;

import java.util.Scanner;

public class JiaoChe extends Car{


    public JiaoChe(String chepai, String chexing, String color, double rizujin) {
        super(chepai, chexing, color, rizujin);
    }

    public JiaoChe() {
    }

    @Override
    public void zuli() {
        double zujin;
        Scanner input=new Scanner(System.in);
        System.out.println("请输入租车时间:");
        int date=input.nextInt();
        zujin=date*getRizujin();
        System.out.println("租货信息:");
        System.out.println("车牌:"+getChepai());
        System.out.println("车型:"+getChexing());
        System.out.println("颜色:"+getColor());
        System.out.println("租车人:李四");
        System.out.println("租金:"+zujin);
    }
}

卡车类:

package com.jr.date723.carzaoceshi;

import java.util.Scanner;

public class KaChe extends Car{
    private int zaizhongliang;

    public KaChe(String chepai, String chexing, String color,int zaizhongliang,double rizujin) {
        super(chepai, chexing, color, rizujin);
        this.zaizhongliang = zaizhongliang;
    }

    public KaChe(int zaizhongliang) {
        this.zaizhongliang = zaizhongliang;
    }

    public KaChe() {
    }

    public int getZaizhongliang() {
        return zaizhongliang;
    }

    public void setZaizhongliang(int zaizhongliang) {
        this.zaizhongliang = zaizhongliang;
    }

    @Override
    public void zuli() {
        double zujin;
        Scanner input=new Scanner(System.in);
        System.out.println("请输入租车时间:");
        int date=input.nextInt();
        zujin=date*getRizujin();
        System.out.println("租货信息:");
        System.out.println("车牌:"+getChepai());
        System.out.println("车型:"+getChexing());
        System.out.println("颜色:"+getColor());
        System.out.println("载重量:"+getZaizhongliang());
        System.out.println("租车人:张三");
        System.out.println("租金:"+zujin);
    }
}

Test类:

package com.jr.date723.carzaoceshi;

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.out.println("请输入租车人姓名:");
        String name=input.next();
        if (name.equals("张三")){
            KaChe kaChe=new KaChe("京D1111","东风","蓝色",500,100.0);
            kaChe.zuli();
        }else if (name.equals("李四")){
            JiaoChe jiaoChe=new JiaoChe("京R0000","奥迪","黑色",200.0);
            jiaoChe.zuli();
        }


    }
}

暂时只上传这两个例子

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值