java学习

整数 int   小数 double   布尔  boolean  字符 char    

数组 

类型 名称【】={}  或  类型 名称【】=new 类型【int】 

数组是固定长度创建后就无法改变长度   长度用  .length

for循环  if判断  同 javascript

运算符 ++    --     &&     ||     ! 三元表达式  也是相同的

运算

int类型和int类型在进行+ - * / % 等  如果有小数  不管是多少都会自动舍弃  解决办法转化为小数

利用 ()强转为小数  或者   自动转化  int可以转化为double 但是double转化不成int 

关键字

public修饰就是全局可以访问  方法和 成员都是一样的

static修饰的变量和方法  就是静态方法  和静态成员 不用new出实例就可以访问到

private 修饰的只能在当前class下访问  如果别的class想要访问的话  要用get和set方法

默认是同一个包下可以访问 

protected相同包下和子类下可以用

在别的包想要用class的情况下需要导包

构造器

类下的构造器和方法的重载是一致的  默认为无参数  但是写了有参数构造器就要把无参数构造器也写出来

方法和class

public class faceObject{
//  定义一个类  在别的类引用  这个叫构造类
//    但是里面的值都是空的
    private String name;
    int id;
    double price;
    int buyNumber;
//    final 为不可变的  不能进行更改  写在方法上后方法不能被重写  class则不能被继承
//    final 声明的成员 无法声明set
    final int immutable=10;
    public int getImmutable() {
        return immutable;
    }




      //    我们需要用构造器来搞定  给初始值  在声明的时候为 new ****(1,2,3,4,5)
    //    和重载类似  只不过一个是方法  另外一个是class内
//    对象内的方法 this指向对象  定义了有参数构造器  无参数构造器也要写
    public faceObject(String name, int id, double price, int buyNumber) {
        this.name = name;
        this.id = id;
        this.price = price;
        this.buyNumber = buyNumber;
    }
    public faceObject(){

    }



//    当代码在运行中可能遇到各式各样的情况 直接赋值可能不满足需求  我们可以用private私有变量
//    在外边就不能直接获取和修改对象的私有变量 只能通过getter和setter来修改
//    我们就可以在方法内做限制了
    public String getName() {
        return name;
    }

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

    public int getId() {
        return id;
    }

    public void setId(int id) {
//        如id不可为负数一样
        if(id<0)return;
        this.id = id;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getBuyNumber() {
        return buyNumber;
    }

    public void setBuyNumber(int buyNumber) {
        this.buyNumber = buyNumber;
    }
}

继承

//static关键字 在类中的成员变量上加
//所有的都可以共用变量
//方法也是一样的
//如 工具类  不用对象实例的值  直接  类名。方法  进行操作的要加static
//方法和实例都是一样,要类访问或者共用变量就加static

//在工具类中static方法以后,专业一点就是不让他创建对象,只能类名调用就private构造器


//静态代码块   在main之前执行  只执行一次 static{} 用于对警惕实例初始化


//继承类  将相同的抽出来
//然后将不同的继承父class
//public class son extends father{
//
//}
//不能多继承  但是可以多层继承
//继承时候 名称相同  就近原则 如果想用父类的重名方法 就用super

抽象类

抽象类  关键字  abstract

当一个class中有一个方法被定义为抽象类的时候这个class也要定义成抽象方法

抽象方法被extends后  继承类要完全实现约定  将抽象类的抽象方法完全定义出来,用来约束

抽象类不能new 对象 只能被继承

抽象类在定义抽象的方法只能定义名称  不能定义方法体

public abstract class animal {
//    声明为抽象类
//    抽象类不能写方法体
//    当一个类里面有抽象方法时,class必须为抽象类
    public abstract void run();
}


public class dog extends animal {
    public static void main(String[] args) {
        dog dogExample =new dog();
        dogExample.run();
    }
    @Override
    public void run() {
        System.out.println("11111");
    }
}

生成方法  在报错处 alt+enter 选择implement

抽象与继承一致  就是规定了必须要定义的方法 

抽象类用来规定相同的模板  和要填充的内容  提高代码的复用性

接口

关键字 interface 声明为接口   和被实现 implement

2.接口中只能有方法和变量,变量为public static final类型,方法只能被可以为public(默认)和protected修饰,方法不能有具体的实现

3.一个类可以实现多个接口

4.一个类实现接口,必须要实现接口的所有的方法

//定义接口
//老版本的interface 只能定义  常量和 抽象方法
//接口是一种规范  是一种公开的 方法默认都是持抽象的  成员默认是常量

public interface interfaces {
//    常量
    public static final int a=20;
//    抽象方法
    public abstract void aa();


//    --------------------------------------------------
//    两种方法的出现是为了版本迭代时,不用一个个的去重写继承类
//    静态方法  接口名称调用
     static void staticHello(){
         System.out.println("你好静态方法");
     }
//    普通方法  实例就可以调用
    default void defaultHello(){
        System.out.println("default你好");
    }
}
//一个类可以继承多个接口 中间用逗号隔开
//或者一个接口继承多个接口  然后类继承合并后的接口  都可以
class implementObject implements interfaces{
//class  implements interface

//    abstract mothed
    @Override
    public void aa() {
        System.out.println(a);
    }
}
//当一个接口又要继承又要实现接口 写法
//class a extends b implements c{}
//当出现重名时候  以继承类为准
class test{
//    structure class
    public static void main(String[] args) {
        implementObject structure =new implementObject();
        structure.aa();
        structure.defaultHello();
        interfaces.staticHello();
    }
}

抽象类和接口

1.抽象类是对事物的抽象,它包含属性和行为(方法)的抽象,而接口是对行为的一种抽象。我们在选择时候可以根据这点来确定。如飞机和鸟,它没有共同属性,但是他们有共同的行为——飞,这个时候我们可以用接口。而民用飞机、战斗机等他们都是飞机一种,这个时候我们可以将飞机座位一个抽象类。

2.从设计层面来说,抽象类有很多子类,它是一种模板式方法。接口是一种行为规范,它是一种辐射式设计。什么是模板式方法呢?举个例子:PPT b,c,d都使用了A模板,现在A模板中增添了一个公共的功能,我们不需要对b,c,d就行改变。什么是辐射式设计?举个例子:上帝创造了动物,给每个动物都创建了吃、走等方法,各个动物具体的实现都不同,有一天上帝觉得动物们动的太慢了,于是又增加了一个跑的方法,那么每个动物都要有一个新的具体实现跑的方式。

多态 

public abstract class menystatus {
    String name="父类";
    public abstract void go();
}

class dogs extends menystatus{
    public String name="子类狗";
    @Override
    public void go() {
        System.out.println("我是狗");
    }
    public void dogFn(){
         System.out.println("子类狗独有的方法");
    }
}
class cat extends menystatus{
    public String name="子类猫";
    @Override
    public void go() {
        System.out.println("我是猫");
    }
    public void dogFn(){
         System.out.println("子类狗独有的方法");
    }
}
class test11{
    public static void main(String[] args) {
       menystatus dog= new dogs();
       menystatus cat= new cat();
       run(dog);
       run(cat);
    }
    public static void run(menystatus a){
        a.go();
        System.out.println(a.name);
    }
}
//多态的特性  可以一个方法让多个对象共用  类型为父元素   方法运行的是子类的方法, 但是变量执行的是父类

 切记  方法运行的是子类的   但是变量时父类的  要是想用子类的变量  就要用instanceof判断是哪一个子类  然后强转为对应子类然后再调用

\\

maven

Index of /dist/maven/maven-3/3.6.1/binaries

Maven3.6.1安装及配置_浅若清风过的博客-CSDN博客

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值