整数 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