java三大特性基础简述(实例)

继承:
关键字:extends  如:
public class A extends B
这里A是子类,B是父类
子类里面既继承父类的所有的变量与方法,也可以自己在本类中添加新的成员变量与方法。这里就引出子类的方法重写--重写父类里面的方法与super关键字
事例:public class Car {//父类
";//父类成员,并初始化
public String color="黑色";//颜色
public int speed=1;//速度
public int level;//档位
public void shu(int num){
  level=num;//换挡
  speed =10*level*level;//变速
}
public void drive(){
  System.out.println("我是一辆" + color + "的轿车");
  System.out.println("现在以时速" + speed +"公里每小时的速度行驶中");
  System.out.println("车档位是:" + level + "档");
}
}
//子类
public class ZiCar extends Car {
public void drive(int num) {
  super.shu(5);
  super.drive();
}
public static void main(String[] args) {
  ZiCar zc = new ZiCar();
  zc.drive(5);
}
}
修饰符:private   public  protected和默认权限修饰符,这里主要讲private。
private:是私有权限修饰符,引出封装性定义。
当成员变量设置为私有权限后,其他类不能访问了,必须通过本类定义的设置器方法来设置修改成员变量的值。
事例:
**
*  定义Car类,在该类中定义字符串color和布尔类型的running两个成员变量,并设置它们的访问器与设置器方法。
*
* @author
*/
public class Car {
    private String color = "黑色"; // 颜色
    private boolean running; // 行驶状态
   
    /**
     * 设置color属性值的设置器方法
     *
     * @param color
     *            颜色参数
     */
    public void setColor(String color) {
        this.color = color; // 把参数color赋值给成员变量color
    }
   
       public String getColor() {
        return color; // 返回color属性值
    }
   
    public boolean isRunning() {
        return running; // 返回running属性值
    }
    public void setRunning(boolean running) {
        this.running = running; // 设置成员变量running
    }
}

public class Program {
    public static void main(String[] args) {
        Car whiteCar = new Car(); // 创建Car类的实例对象
        whiteCar.setColor("红色"); // 修改该实例中color属性
        whiteCar.setRunning(true); // 设置car对象的行驶状态
        System.out.println("color属性:" + whiteCar.getColor());
        System.out.println("running属性:" + whiteCar.isRunning());
    }
}
Object类中的equals方法,toString方法:
事例:
equals():
public class TempClass {
   
}
public class TestEquals {
    public static void main(String[] args) {
        String s1 = "123"; // 实例化两个对象,内容相同
        String s2 = "123";
        System.out.println("s1 equals s2 :" + s1.equals(s2)); // 使用equals()方法调用
        TempClass v1 = new TempClass(); // 实例化两个V类对象
        TempClass v2 = new TempClass();
        System.out.println("v1 equals v2 :" + v1.equals(v2)); // 使用equals()方法比较v1与v2对象
    }
}
========================================================================
toString():
public class Obj {
    public String toString() { // 重写toString()方法
        return "大家好,我是ObjectInstance类的实例对象。";
    }
   
    public static void main(String[] args) {
        Obj object = new Obj();
        System.out.println("输出ObjectInstance实例对象:\n" + object); // 打印本类对象
    }
}
多态性:
参数多态
package com.shuohua;
public class Speak {
/*
  * 说话的主题类   定义了speak()方法
  */
public void speak(){
  System.out.println("不同角色的说话方式");
}
}===============================================
package com.shuohua;
/*
* 魂淡类
*
*/
public class HunDang extends Speak{
/*
  * 魂淡的说话方式   重写父类方法
  */
public void speak(){
  System.out.println("修真界Boss————————————————");
  System.out.println("       魂淡悠哉悠哉的想说话:");
  System.out.println("\t好烦啊---总是那么多妹子找我。。。。");
  System.out.println("小龙反应:");
  System.out.println("\t艳遇啊,要不给小弟几个。。。。");
  System.out.println("===========================================");
}
}
==================================================
package com.shuohua;
public class KongGe extends Speak {
/*
* 空格类     重写父类方法
*/
public void speak(){
  System.out.println("魔界至尊:————————————————");
  System.out.println("    某人说走了。。。。空格前辈说:");
  System.out.println("\t小樱别走。。。。。");
  System.out.println("小龙反应:");
  System.out.println("\t好煽情啊,空格前辈!!!");
  System.out.println("===========================================");
}
}
==================================================
package com.shuohua;
public class YuLing extends Speak {
/*
  * 羽林类    重写父类方法
  */
public void speak(){
  System.out.println("仙界老大:——————————");
  System.out.println("    羽灵前辈:");
  System.out.println("\t小龙,你在干嘛勒?");
  System.out.println("小龙回应:");
  System.out.println("\t在听歌勒,不会有没声音吧??!!!  前辈、、、、、");
  System.out.println("===========================================");
}
}
=====================================================
package com.lz;
import com.shuohua.*;;//导入说话包
public class Master {
/*
  * 这是主人类   它将用于不同的人的话语
  */
public void lz(Speak s){
  System.out.println("凡人界小龙菜鸟正在。。。。。中-----各界反应:");
  s.speak();
}
}=======================================================
package com.lz;
import com.shuohua.HunDang;//导入魂淡类
import com.shuohua.KongGe;//导入空格类
import com.shuohua.YuLing;//导入羽林类
public class YunXing {
public static void main(String[] args) {
  HunDang hd = new HunDang();
  KongGe  kg = new KongGe();
  YuLing  yl = new YuLing();
  Master   m = new Master();
  System.out.println("各界人马就绪:\n=================================");
  m.lz(yl);
  m.lz(kg);
  m.lz(hd);
  System.out.println("\t小龙忽悠忽悠的路过。。。。。");
}
}
抽象类:关键字--abstract
直接事例吧!
//抽象类  Shape
public abstract class Shape {
    public String getName() {//获取图形名称
        return this.getClass().getSimpleName();
    }
   
    public abstract double getArea();//获取图形面积---抽象方法。需要在子类里面实现方法
}
======================================================================
public class Circle extends Shape {//继承抽象父类
   
    private double radius;//声明私有变量成员
   
    public Circle(double radius) {//获取图形半径
        this.radius = radius;
    }
       public double getArea() {//计算面积
       
        return Math.PI * Math.pow(radius, 2);
    }
   
}
=====================================================================================
public class Rectangle extends Shape {
   
    private double length;
    private double width;
   
    public Rectangle(double length, double width) {//获取长与宽
        this.length = length;
        this.width = width;
    }
   
    @Override
    public double getArea() {//计算面积
        return length * width;
    }
   
}
=========================================================================
public class Test {//测试类
    public static void main(String[] args) {
        //创建各自类的对象
        Circle circle = new Circle(1);
        System.out.println("图形的名称是:" + circle.getName());
        System.out.println("图形的面积是:" + circle.getArea());
        Rectangle rectangle = new Rectangle(1, 1);
        System.out.println("图形的名称是:" + rectangle.getName());
        System.out.println("图形的面积是:" + rectangle.getArea());
    }
}
接口:关键字----interface
接口也是抽象类!
而类实现的关键字---implements
继承由于不能一个子类多重继承几个父类,而接口正好却能够实现,一个类能多重实现多个接口类
事例就不必细说了。


提升事例篇:
1.单例模式的应用
public class Emperor {
    private static Emperor emperor = null;
    private String name = "我是皇帝";
    private Emperor() {// 把构造方法私有化
    }
    public static Emperor getInstance() {// 定义获取实例的方法
        if (emperor == null) {// 确保只创建一个实例对象
            emperor = new Emperor();
        }
        return emperor;
    }
    public void setName(String name) {// 修改name成员变量的方法
        this.name = name;
    }
    public void sayInfo() {// 输出信息的方法
        System.out.println(name + ":有事奏来,无事退朝");
    }
   
}
=====================================================================
public class EmperorTest {
    public static void main(String[] args) {
        System.out.println("创建皇帝1对象:");
        Emperor emperor1 = Emperor.getInstance();// 获取实例对象
        emperor1.sayInfo();// 输出信息
        System.out.println("创建皇帝2对象:");
        Emperor emperor2 = Emperor.getInstance();// 获取实例对象
        emperor2.setName("我是乾隆");// 修改name成员变量
        emperor2.sayInfo();// 输出信息
        System.out.println("创建皇帝3对象:");
        Emperor emperor3 = Emperor.getInstance();// 获取实例对象
        emperor3.sayInfo();// 输出信息
    }
}
========================================================================
2.重新定义对象的等式判断
public class Cat {
    private String name;
    private int age;
    private double weight;
    private String color;
   
    public Cat(String name, int age, double weight, String color) {
        this.name = name;
        this.age = age;
        this.weight = weight;
        this.color = color;
    }
   
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        Cat cat = (Cat) obj;
        return name.equals(cat.name) && (age == cat.age)
                && (weight == cat.weight) && (color.equals(cat.color));
    }
   
    public String getInfo() {
        StringBuilder sb = new StringBuilder();
        sb.append("名字:" + name + "  ");
        sb.append("年龄:" + age + "  ");
        sb.append("重量:" + weight + "  ");
        sb.append("颜色:" + color + "  ");
        return sb.toString();
    }
}
==============================================================================
public class Demo {
    public static void main(String[] args) {
        Cat cat1 = new Cat("咖啡猫", 12, 21, "黑色");    // 创建第1个猫咪对象
        Cat cat2 = new Cat("波斯猫", 12, 21, "白色");    // 创建第2个猫咪对象
        Cat cat3 = new Cat("咖啡猫", 12, 21, "黑色");    // 创建第3个猫咪对象
        System.out.println("猫咪1号:" + cat1.getInfo()); // 输出每个猫咪对象的属性
        System.out.println("猫咪2号:" + cat2.getInfo());
        System.out.println("猫咪3号:" + cat3.getInfo());
        System.out.println("猫咪1号是否与猫咪2号相同:" + cat1.equals(cat2));
        System.out.println("猫咪1号是否与猫咪3号相同:" + cat1.equals(cat3));
    }
}

你可能感兴趣的:(java基础)