AbstractTest
package com.mashibing.abstracts;
/**
* @author: 马士兵教育
* @create: 2019-08-25 16:42
*/
/*
* java中的对象是对现实世界的具象化,但是在现实世界中,某些类并不具备实例化的意义,因此可以定义为抽象类
*
* 抽象类:
* 1、创建抽象类的时候需要添加 abstract 的关键字
* 2、不能进行实例化,也就是不能new对象
* 3、抽象类中的某些方法需要子类进行更丰富的实现,父类实现没有意义,此时可以将抽象类
* 中的方法定义为抽象方法,没有具体的实现,只包含方法名称,返回值,参数列表,访问修饰符
* 4、使用abstract关键字修饰的方法叫做抽象方法,可以不写方法的实现
* 5、子类在继承抽象父类的时候,必须要将父类中的抽象方法进行实现或者将子类也定义为抽象类
* 6、有抽象方法的一定是抽象类,但是抽象类中不一定包含抽象方法
* */
public class AbstractTest {
public static void main(String[] args) {
Dog dog = new Dog();
dog.print();
dog.play();
}
}
AccessControlDemo
package com.mashibing;
/**
* @author: 马士兵教育
* @create: 2019-08-24 21:33
*/
/*
* 在java中明确定义了访问权限:
* 限制访问,以下分类按照从大到小进行排列
* public:公共的
* 当前项目的所有的类都可以进行访问
* protected:受保护的
* 可以被当前类访问,可以被当前包访问,也可以被子类访问
* default:默认权限
* 可以被当前类访问,可以被当前包访问,
* private:私有权限
* 只能被当前类访问
*
* 注意:四种访问修饰符可以修饰属性和方法
* 类的访问修饰符只有两个 public default
*
* */
public class AccessControlDemo {
public AccessControlDemo(){
}
protected AccessControlDemo(int a,int b){
}
private String str = "test";
}
class Test{
}
ArgumentDemo
package com.mashibing;
/**
* @author: 马士兵教育
* @create: 2019-08-24 21:49
*/
/*
*
* 方法参数的值是否改变
* 方法中的参数列表叫做形式参数,没有具体的值,只是为了方便在方法体中使用
* 调用方法的时候实际传入的值叫实际参数,代表具体的数值,用来替换在方法体中代码逻辑的值进行运算
* 注意:
* 1、形式参数的变量名称也是局部变量
* 2、当方法的参数值是基本数据类型的时候,不会改变原来的值
* 3、当方法的参数值是引用类型的时候,如果改变了该引用类型的值,会改变原来对象的值
* java中的参数传递是值传递
* */
public class ArgumentDemo {
public static void test(int a,int b){
int tmp = a;
a = b;
b = tmp;
}
public static void test2(Point point){
int x = point.getX();
int y = point.getY();
int tmp = x;
x = y;
y = tmp;
point.setX(x);
point.setY(y);
}
public static void main(String[] args) {
// int a = 10;
// int b = 20;
// test(a,b);
// System.out.println(a);
// System.out.println(b);
Point point = new Point(2,3);
test2(point);
System.out.println(point.getX());
System.out.println(point.getY());
}
}
Pet
package com.mashibing.abstracts;
/**
* @author: 马士兵教育
* @create: 2019-08-25 16:45
*/
public abstract class Pet {
private String name;
private int age;
public abstract void print();
public void play(){
System.out.println("play....");
}
}
Dog
package com.mashibing.abstracts;
/**
* @author: 马士兵教育
* @create: 2019-08-25 16:49
*/
public class Dog extends Pet{
private String gender;
@Override
public void print() {
System.out.println("dog print");
}
}
Test
package com.mashibing.abstracts;
/**
* @author: 马士兵教育
* @create: 2019-08-25 17:03
*/
public class Test {
public static void main(String[] args) {
System.out.println(new Test2());
}
}
class Test2{
}
FinalDemo
package com.mashibing.abstracts;
/**
* @author: 马士兵教育
* @create: 2019-08-25 16:55
*/
/*
* final的使用:
* final可以修饰变量:
* 表示变量的值不可变
* final可以修饰方法:
* 表示方法不可以被重写
* final可以修饰类:
* 表示类不可以被继承
*
* */
public final class FinalDemo {
public final String name = "zhangsan";
public final void test(){
System.out.println("final test");
}
public static final int age =10;
public static void main(String[] args) {
// age = 20;
}
}
FinalSubClass
package com.mashibing.abstracts;
/**
* @author: 马士兵教育
* @create: 2019-08-25 16:57
*/
public class FinalSubClass /* extends FinalDemo*/{
// @Override
// public final void test(){
//
// }
}