`

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));
    }
}
0
4
分享到:
评论

相关推荐

    java面试宝典

    231、Java语言的11个关键特性. 54 232、说出Servlet的生命周期,并说出Servlet和CGI的区别。 55 233、说出在JSP页面里是怎么分页的? 55 234、存储过程和函数的区别 55 235、事务是什么? 55 236、游标的作用?如何...

    java基础题 很全面

    Java基础 6 1. 面向对象的特征有哪些方面 6 2. String是最基本的数据类型吗? 7 3. int 和 Integer 有什么区别 7 4. String 和StringBuffer的区别 7 5. 运行时异常与一般异常有何异同? 7 6. 说出ArrayList,Vector, ...

    JAVA面试题最全集

    一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...

    java面试题大全(2012版)

    Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte...

    java 面试题 总结

    JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...

    Java面试宝典-经典

    Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte...

    Java面试宝典2010版

    Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte...

    java面试题

    数据库三大范式? 答:1:确保每列都是不可分割的原子值 2:确保每列都和主键相关 3:确保每列都和主键直接相关,而不是间接相关 单例模式有哪些好处? 答:单例模式是一种比较常见的设计模式,带给我们以下好处:...

    最新Java面试宝典pdf版

    Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte...

    java面试宝典2012

    1. Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 8 2、Java有没有goto? 8 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在...

    Java面试笔试资料大全

    Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte...

    JAVA面试宝典2010

    Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 8 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte...

    Java面试宝典2012新版

    Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte...

    超级有影响力霸气的Java面试题大全文档

    超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。...

    Java面试宝典2012版

    Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用...

    java面试宝典2012版.pdf

    Java基础部分 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 2、Java有没有goto? 3、说说&和&&的区别。 4、在JAVA中如何跳出当前的多重嵌套循环? 5、switch语句能否作用在byte上,...

Global site tag (gtag.js) - Google Analytics