成员内部类实战
//成员内部类
class exercise{
public static void main(String[] args) {
Animal.Heart at = new Animal().new Heart();//访问成员内部类
at.move();//方法
}
}
class Animal{//动物外部类
int a = 100;
class Heart{//心脏内部类
public void move() {//成员内部类方法
System.out.println("动物的心脏在跳动"+Animal.this.a);//访问外部类
}
}
}
接口实战(带橡皮的铅笔)
package com.llhc;
public class QuickSort {
public static void main(String[] args) {
PencilEraser p = new PencilEraser();
p.writer();
p.wipe();
}
}
class Pencil{
public void writer(){
System.out.println("具备写的功能");
}
}
interface Eraser{
public void wipe();
}
class PencilEraser extends Pencil implements Eraser{
public void wipe(){
System.out.println("具备擦除功能");
}
}
接口实战(会赚钱的学生)
package com.llhc;
public class QuickSort {
public static void main(String[] args) {
StudentStudyMoney ssm = new StudentStudyMoney("张三");
ssm.studentStudy();
ssm.studentMoney();
}
}
class Study{
String name;
public Study(String name){
this.name=name;
}
public void studentStudy(){
System.out.println(name+"学习很好!!!");
}
}
interface Money{
public void studentMoney();
}
class StudentStudyMoney extends Study implements Money{
public StudentStudyMoney(String name) {
super(name);
// TODO Auto-generated constructor stub
}
@Override
public void studentMoney() {
System.out.println(name+"也很会赚钱");
}
}
封装实战(封装公共属性)
class Exercise{
public static void main(String[] args){
Net n = new Net();
n.setId(100);//调用set属性名
System.out.println("ID"+n.getId());//调用get属性名
n.user();
}
}
class Net{//某网
int tel;//电话
String name;//名字
private int id;//用private封装id
//set属性名
public void setId(int ids){
if(ids>=18){//id不可以大于18
id=18;
}else{
id=ids;
}
}
//get属性名
public int getId(){//获取id
return id;
}
public void user(){
System.out.println("封装");
}
}
封装实战(计算器)
/*计算器
具备两个操作数,一个操作符,具备计算功能。
操作数和操作符要封装
*/
class Exercise{
public static void main(String[] args){
Calculator c = new Calculator();//调用类
c.setCalculator(45,2,'*');//调用set+类方法
c.Arithmetic();//调用运算方法
}
}
class Calculator{//计算器
private int num1;//操作数1
private int num2;//操作数2
private char operator;//操作符
//如果要同时封装多个属性,调用“set+类名”的方法。
public void setCalculator(int num1,int num2,char operator){//多属性同时封装
this.num1=num1;//初始化
this.num2=num2;//初始化
this.operator=operator;//初始化
if(operator=='+'||operator=='-'||operator=='*'||operator=='/'){//如果是这4个符号
this.operator=operator;//就返回给成员属性
}else{
this.operator='+';//否则就把‘+’返回
}
}
public void Arithmetic(){//运算方法
if(operator=='+'){
System.out.println("结果:"+(num1+num2));
}else if(operator=='-'){
System.out.println("结果:"+(num1-num2));
}else if(operator=='*'){
System.out.println("结果:"+(num1*num2));
}else if(operator=='/'){
System.out.println("结果:"+(num1/num2));
}
}
}
接口多态
class exercise{
public static void main(String[] args) {
Study s = new Student();//接口多态:接口 变量名 = new 接口实现类
s.read();
s.made();
}
}
interface Study{//接口
public void read();
public void made();
}
class Student implements Study{//实现接口
public void read() {
System.out.println("阅读");
}
public void made() {
System.out.println("玩耍");
}
}
局部内部类
//局部内部类
class exercise{
public static void main(String[] args) {
Outer o = new Outer();//调用外部类
o.run();//调用方法
}
}
class Outer{
public void run() {
final int i = 100;//用final修饰
class Inner{//内部类
public void head() {
System.out.println(i);//访问变量
}
}
Inner innwe = new Inner();//创建内部类对象
innwe.head();//调用内部类方法
}
}
匿名内部类
//匿名内部类
class exercise{
public static void main(String[] args) {
Outer o = new Outer();
o.print();
}
}
abstract class Animal{//抽象类
public abstract void run();
}
class Outer{//外部类
public void print() {//成员方法
new Animal() {//匿名内部类
public void run() {//实现抽象方法
System.out.println("实现抽象方法");
}
}.run();
}
}
重写(学生培训)
/*
需求:使用java描述一下普通的学生、java基础班的学生、就业班的学生
学生都会学习,学的内容不一样。
普通的学生:马克思主义
基础班的学生:javase
就业班的学生:javaee+android
*/
class exercise{
public static void main(String[] args){
new Student();
commonStudent c = new commonStudent();
c.content();
basicsStudent b = new basicsStudent();
b.content();
employmentStudent e = new employmentStudent();
e.content();
}
}
class Student{//学生
public Student() {//构造函数
System.out.println("学生会学习");
}
public void content() {//方法
System.out.println();
}
}
class commonStudent extends Student{//普通学生
public void content() {//重写方法
System.out.println("学习马克思主义");
}
}
class basicsStudent extends Student{//基础班学生
public void content() {//重写方法
System.out.println("javase");
}
}
class employmentStudent extends Student{//就业班学生
public void content() {//重写方法
System.out.println("javaee+android");
}
}
强制多态
class exercise{
public static void main(String[] args) {
Animal a = new Mouse("老鼠");//多态
a.run();
Animal f = new Fish("鱼");//多态
Fish y = (Fish)f;//强制类型转换
f.run();//调用方法
y.dig();//调用子类特有方法
print(f);//参数为f是鱼类,为a是老鼠,为y是调用子类特有方法
}
//题目:定义一个函数可以接收任意的动物对象(利用多态)
public static void print(Animal f) {//Animal f = new Fish("鱼");
Fish y = (Fish)f;//强制类型转换
f.run();//调用方法
}
}
abstract class Animal{//父类 动物
String name;
public Animal(String name){
this.name=name;
}
public abstract void run();//跑的抽象类
}
class Mouse extends Animal{//子类老鼠
public Mouse(String name){
super(name);
}
public void run() {
System.out.println(name+"四条腿跑");//实现父类
}
}
class Fish extends Animal{//子类鱼
public Fish(String name) {
super(name);
}
public void run() {
System.out.println(name+"慢慢的游");//实现父类
}
public void dig() {//子类特有方法
System.out.println("我是子类特有方法");
}
}
抽象类(图形)
class exercise
{
public static void main(String[] args)
{
Roundness r = new Roundness(3,"圆形的");
r.area();
r.perimeter();
Orthogon o = new Orthogon(2,3,"矩形的");
o.area();
o.perimeter();
}
}
abstract class Graph//图形
{
String name;
public Graph(String name){
this.name=name;
}
public abstract void perimeter();
public abstract void area();
}
class Roundness extends Graph//圆形
{
public static final double PI = 3.14;
int r;
public Roundness(int r,String name){
super(name);
this.r=r;
}
public void area(){//面积
System.out.println(name+"面积:"+(PI*r*r));
}
public void perimeter(){
System.out.println(name+"周长:"+(2*PI*r));
}
}
class Orthogon extends Graph//矩形
{
int length;
int width;
public Orthogon(int length,int width,String name){
super(name);
this.length=length;
this.width=width;
}
public void area(){
System.out.println(name+"面积"+(length*width));
}
public void perimeter(){
System.out.println(name+"周长"+(2*(length+width)));
}
}
面向对象
class Exercise{
public static void main(String[] args){
Car c = new Car();//调用车对象
c.wheel=0;//具体轮子
c.name="宝马";//具体名字
c.color="白色";//具体颜色
System.out.println("name"+c.name+"wheel"+c.wheel+"color"+c.color);
c.run();
CarRepair r = new CarRepair();//调用修车厂对象
r.repair(c);//调用修车
c.run();//跑
}
}
class Car{//车是抽象的事物
int wheel;//用整形描述轮子
String name;//描述名字
String color;//描述颜色
public void run(){//用方法描述公共行为
if(wheel==4){
System.out.println("车子跑");
}else{
System.out.println("马上送到修车厂");
}
}
}
//修车厂
class CarRepair{
String name;
public void repair(Car c){//修理车
if(c.wheel==4){
System.out.println("修理完毕");
}else{
System.out.println("补好轮胎");
c.wheel=4;//补轮胎
}
}
}