你将收获

掌握面向对象基础

面向对象三大特征

适用人群

零基础,初学者,想转行,IT爱好者,IT类大学生

课程介绍

本视频是IT兄弟连推出的一套Java的视频第二部分

本主要内容包括:面向对象基础、面向对象的三大特征封装、继承和多态、static关键字、抽象类、匿名类等技术

课程目录

讨论留言

正在加载中...

同学笔记

  • kaihuayu 2021-01-22 13:38:21

    来源:作业讲解之面向对象编程的总结 查看详情

    面向对象总结:

    第一部分内容:面向对象编程的概念,类、对象以及引用、创建对象的过程类的实例化,引用的作用是记录新创建对象的堆区地址信息。成员方法。

    第二部分内容:构造方法类中方法名和类名相同的方法、作用初始化成员变量。和方法重载方法名相同参数类别不同,调用的时候能否加以区分。意义记住一个方法名就能实现不同的效果。this关键字:构造方法中出现this代表当前正在构造的对象。在成员方法中的this 是当前正在调用的变量。成员方法中访问成员变量默认加this点。成员变量名和形参变量名相同时,加this明确访问的是成员变量。

    方法的传参过程递归。基本数据类型变量作为方法的参数传递时,形参的改变不会影响实参。引用数据类型变量作为方法的参数传递时,形参的改变对实参有影响。

    第三部分;封装。保证合理行。安全性。static关键字,提升到类层级。单例设计模式,继承,当多个类有相同的特征时使用继承,方法重写。

    第四部分;访问控制,final关键字、多态。

    第五部分:抽象类,接口interface,implements、匿名内部类

  • kaihuayu 2021-01-21 17:21:23

    来源:作业讲解之接口作为方法参数的使用 查看详情

    1、重点掌握图形和接口相关的代码。 
    2、自定义抽象类 Account 实现封装,特征:账户余额( balance ) ,在该类中提供一个计算利息并返回的抽象方法。自定义 FixedACcount 类继承Account类并重写抽象方法,要求在 main 方法中使用多态方式构造对象并存入 1000元,计算利息后打印出来(其中利率 0.003 )。
    3、定义InterfaceA接口,里面含有一个抽象方法 int method(int n); 
    定义 ClassA 类实现 InterfaceA 接口并重写 method 方法,要求计算 1 到 n 的和并返回
    定义 ClassB 类实现 InterfaceA 接口并重写 method 方法,要求计算 n 的阶乘并返回;
    定义 TestInterface 测试类,里面包含一个参数为 IrlterfaceA 接口形参的方法,并在该方法体中调用method方法,最后在main方法中调用该方法。

    package cn.itxdl.day11;
    
    public abstract class Account {
    	private int balance;
    	
    
    	public Account() {
    		super();
    	}
    
    	public Account(int balance) {
    		super();
    		setBalance(balance);
    	}
    
    	public int getBalance() {
    		return balance;
    	}
    
    	public void setBalance(int balance) {
    		if(balance>0) {
    		this.balance = balance;
    		}else {
    			System.out.println("不合理");
    		}
    	}
    	//提供一个抽象方法返回利息
    	public abstract double getlixi();
    	//abstract 关键字和final关键字不能共同修饰一个方法 final不能被重写
    	//public abstract final double getlixi();
    	//abstract 关键字和 static 关键字不能共同修饰一个方法。抽象方法不能被直接调用 static 可以使用类名.调用
    	//public abstract static double getlixi();
    	//private 和 abstract 不能共同修饰一个放,private 修饰的方法不能被继承
    	//private abstract double getlixi();
    
    }
    
    package cn.itxdl.day11;
    
    public class FixedAccount extends Account {
    
    	public FixedAccount(int i) {
    		// TODO Auto-generated constructor stub
    		//调用父类有参构造方法 把i传给父类的构造方法 setBalance(balance)
    		super(i);
    	}
    
    	@Override
    	public double getlixi() {
    		// TODO Auto-generated method stub
    		//计算利息  金额 乘以 利率
    		return getBalance()*0.003;
    	}
    	
    	public static void main(String[] Ages) {
    		//使用构造方法存入1000元
    		Account ac = new FixedAccount(1000);
    		System.out.println("利息是"+ ac.getlixi());
    		
    	}
    
    }
    

    定义InterfaceA接口,里面含有一个抽象方法 int method(int n); 

    package cn.itxdl.day11;
    
    public interface InterfaceA {
    	public abstract int method(int n);
    }
    

    定义 ClassA 类实现 InterfaceA 接口并重写 method 方法,要求计算 1 到 n 的和并返回

    package cn.itxdl.day11;
    
    public class ClassA implements InterfaceA {
    
    	@Override
    	public int method(int n) {
    		// TODO Auto-generated method stub
    		//累加 m+ =i;
    		int m = 0;
    		for (int i=1;i<= n;i++) {
    			// m  = m+i;
    			m=m+i;
    			
    		};
    		return m;
    	}
    
    	/*
    	 * public static void main(String[] args) { // TODO Auto-generated method stub
    	 * ClassA c = new ClassA(); System.out.println(c.method(100));
    	 * 
    	 * }
    	 */
    
    }
    

    定义 ClassB 类实现 InterfaceA 接口并重写 method 方法,要求计算 n 的阶乘并返回;

    package cn.itxdl.day11;
    
    public class ClassB implements InterfaceA {
    
    	@Override
    	public int method(int n) {
    		// TODO Auto-generated method stub
    		//阶乘
    		int m =1;
    		for (int i =1 ; i<=n  ; i++) {
    			m=m*i;
    		}
    		return m;
    	}
    	
    	/*
    	 * public static void main(String[] Arges) { ClassB b= new ClassB();
    	 * System.out.println(b.method(10)); }
    	 */
    }
    

    定义 TestInterface 测试类,里面包含一个参数为 IrlterfaceA 接口形参的方法,并在该方法体中调用method方法,最后在main方法中调用该方法。

    package cn.itxdl.day11;
    
    public class TestInface {
    	//使用InterfaceA 接口形参
    	public int sum(InterfaceA m) {
    		return m.method(10);
    		
    	}
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		TestInface s= new TestInface();
    		System.out.println("结果等于"+s.sum(new ClassA())); //调用A类的重写方法  累加
    		System.out.println("结果等于"+s.sum(new ClassB())); //调用B类的重写方法 阶乘
    
    	}
    
    }
    

     

  • kaihuayu 2021-01-20 15:54:05

    来源:接口类型的引用作为方法形参的处理方式二 查看详情

     

    匿名内部类

    当接口类型的引用作为方法的形参时。实参的传递方式有两种

    a.自定义类实现接口,然后创建该类的对象作为实参传递;

    b.使用匿名内部类的语法格式来得到接口类型的引用作为实参传递;

    package cn.itxdl.day10;
    
    public class Atest {
    	//A是个接口类型,因此下面就是接口类型的引用作为方法的形参
    	//接口类型的引用指向实现类的对象,实现了多态 A a =new SubA();
        public static void test(A a) {
        	//在编译阶段调用A接口中的show方法,运行时调用实现类中重写的版本
        	a.show();
        }
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		//Atest.test(new A()); //error A是个接口类型比抽象类还抽象,不能创建对象
    		Atest.test(new SubA());//传递A 接口的子类参数
    		System.out.println("--------------------------");
    		
    		//接口/父类类型 引用变量名  = new 接口/父类类型(){方法重写};
    		A ta = new A() {
    
    			@Override
    			public void show() {
    				// TODO Auto-generated method stub
    				System.out.println("这里是A 接口的匿名类 中的方法");
    				
    			}
    			
    		};
    		Atest.test(ta);
    	}
    
    }
    

没有更多了