java基础2

1.面向对象
特点:
1:将复杂的事情简单化。
2:面向对象将以前的过程中的执行者,变成了指挥者。
3:面向对象这种思想是符合现在人们思考习惯的一种思想。

匿名对象

/**
 * @Description
 * @ClassName objectDemo
 * @Author yangff
 * @date 2021.10.13 21:54
 */

class objectDemo2{
    private long pid=123456789;
    public objectDemo2(){
        System.out.println("Person()");
    }
    public objectDemo2(long pid){
        System.out.println("Person(long pid)");
        System.out.println("在使用传进来的pid赋值前:pid:"+this.pid);
        this.pid = pid;
        System.out.println("在使用传进来的pid赋值后:pid:"+this.pid);
    }
}
public class objectDemo extends objectDemo2{   //extends 实现继承关系
    private String name;
    private int age=0;
    public objectDemo(){
        System.out.println("Student()");
    }
    public objectDemo(long pid, String name, int age){
        super(pid);         //调用父类的构造函数一定要写在最前面不然会报错
        System.out.println("Student(long pid, String name, int age)");
        this.name = name;
        this.age = age;
    }
    public String getName(){
        return name;
    }
    public static void main(String[] args){
        objectDemo stu1 = new objectDemo();
        objectDemo stu2 = new objectDemo(123456,"Sakura",20);

        //没有栈指向的对象就叫做匿名对象。
        System.out.println(new objectDemo(123456,"Sakura",20).getName());
    }
}

成员变量和局部变量的区别:
1:成员变量直接定义在类中。局部变量定义在方法中,参数上,语句中。
2:成员变量在这个类中有效。局部变量只在自己所属的大括号内有效,大括号结束,局部变量失去作用域。
3:成员变量存在于堆内存中,随着对象的产生而存在,消失而消失。局部变量存在于栈内存中,随着所属区域的运行而存在,结束而释放。

构造函数:
用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种。
该函数的名称和所在类的名称相同。
不需要定义返回值类型。
该函数没有具体的返回值。

在这里插入图片描述

构造函数和一般函数区别:
两个函数定义格式不同。
构造函数是在对象创建时,就被调用,用于初始化,而且初始化动作只执行一次。
一般函数,是对象创建后,需要调用才执行,可以被调用多次。

面向对象特征:封装,继承,多态
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:将变化隔离;便于使用;提高重用性;安全性。
继承:java中对于继承,java只支持单继承。java虽然不直接支持多继承,但是保留了这种多继承机制,进行改良。
好处:提高了代码的复用性。让类与类之间产生了关系,提供了另一个特征多态的前提。

不支持多继承的原因:
因为当一个类同时继承两个父类时,两个父类中有相同的功能,那么子类对象调用该功能时,运行哪一个呢?因为父类中的方法中存在方法体。
但是java支持多重继承。A继承B B继承C C继承D。

final特点:
1.这个关键字是一个修饰符,可以修饰类,方法,变量。
2.被final修饰的类是一个最终类,不可以被继承。
3.被final修饰的方法是一个最终方法,不可以被覆盖。
4.被final修饰的变量是一个常量,只能赋值一次。

抽象类: abstract


/**
 * @Description
 * @ClassName abstract_Shape
 * @Author yangff
 * @date 2021.10.13 22:08
 */
public abstract class abstract_Shape{
    //初始化块
    {
        System.out.println("执行Shape的初始化块");
    }
    private String color;
    public abstract double calPerimeter();
    public abstract_Shape(){ }
    public abstract_Shape(String color){
        System.out.println("执行Shape构造器");
        this.color=color;
    }
    public void setColor(String color){
        this.color=color;
    }
    public String getColor(String color){
        return color;
    }
}
class abstract_Shape2 extends abstract_Shape{
    private double a;
    private double b;
    private double c;
    public abstract_Shape2(String color,double a,double b,double c){
        super(color);
        this.setSide(a,b,c);
    }
    public void setSide(double a,double b,double c){
        if(a>=b+c||b>=a+c||c>=a+b){
            System.out.println("三角形两边之和需要大于第三边");
            return;
        }
        this.a=a;
        this.b=b;
        this.c=c;
    }
    @Override
    public double calPerimeter(){
        return a+b+c;
    }
    public static void mian(String[] args){
        abstract_Shape s1=new abstract_Shape2("黑色",3,4,5);
        System.out.println(s1.calPerimeter());
    }
}

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值