java se 8 programming basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · object-oriented...

135
Java SE 8 Programming Basics Bill Zhang CS50 Seminar

Upload: others

Post on 21-May-2020

26 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Java SE 8 Programming Basics

Bill Zhang

CS50 Seminar

Page 2: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Background

● Released by Sun Microsystems in 1995● Object-oriented programming language● Runs on Java Virtual Machine● Java SE 8 released in 2014● Java SE 9 released in September, 2017

Page 3: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Benefits of Java

● Object oriented○ Procedural (C) and Functional (Python)

● Encapsulation● Platform independent● Robust● Simple● Secure● It’s everywhere!

Page 4: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Downsides of Java

;

Page 5: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Roadmap

1. Basic Java Syntax2. Good Class Design3. Encapsulation

Page 6: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Object-Oriented Programming

public class Animal { }

Page 7: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Object-Oriented Programming

public class Animal {String name;

}

Page 8: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Object-Oriented Programming

public class Animal {String name;

}

Page 9: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Object-Oriented Programming

public class Animal {String name;

}

Page 10: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Fields and Methods

public class Animal {String name;public String getName( ) {

return name;}

}

Page 11: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Fields and Methods

public class Animal {String name;public String getName( ) {

return name;}

}

Page 12: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Fields and Methods

public class Animal {String name;public String getName( ) {

return name;}

}

Page 13: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Fields and Methods

public class Animal {String name;public String getName( ) {

return name;}

}

Page 14: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Fields and Methods

public class Animal {String name;public String getName( ) {

return name;}public void setName(String newName) {

name = newName;}

}

Page 15: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Fields and Methods

public class Animal {String name;public String getName( ) {

return name;}public void setName(String newName) {

name = newName;}

}

Page 16: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Fields and Methods

public class Animal {String name;public String getName( ) {

return name;}public void setName(String newName) {

name = newName;}

}

Page 17: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Fields and Methods

public class Animal {String name;public String getName( ) {

return name;}public void setName(String newName) {

name = newName;}

}

Page 18: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Fields and Methods

public class Animal {String name;public String getName( ) {

return name;}public void setName(String newName) {

name = newName;}

}

Page 19: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Classes and Files

public class Animal { }

Page 20: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Classes and Files

public class Animal { }

Page 21: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Classes and Files

public class Animal { }

Page 22: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Classes and Files

public class Animal { }

$ javac Animal.java

$ java Animal

Will anything happen?

Page 23: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

The main() Method

public class Zoo {public static void main(String[ ] args) {

}}

Page 24: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

The main() Method

public class Zoo {public static void main(String[ ] args) {

}}

Page 25: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

The main() Method

public class Zoo {public static void main(String[ ] args) {

}}

Page 26: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

The main() Method

public class Zoo {public static void main(String[ ] args) {

}}

Page 27: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

The main() Method

public class Zoo {public static void main(String[ ] args) {

System.out.println(args[0]);System.out.println(args[1]);

}}

Page 28: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

The main() Method

public class Zoo {public static void main(String[ ] args) {

System.out.println(args[0]);System.out.println(args[1]);

}}

Page 29: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

The main() Method

public class Zoo {public static void main(String[ ] args) {

System.out.println(args[0]);System.out.println(args[1]);

}}

Page 30: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

The main() Method

public class Zoo {public static void main(String[ ] args) {

System.out.println(args[0]);System.out.println(args[1]);

}}

Page 31: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

The main() Method

$ javac Zoo.java

$ java Zoo Bronx Zoo

BronxZoo

Page 32: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

The main() Method

$ javac Zoo.java

$ java Zoo “San Diego” Zoo

San DiegoZoo

Page 33: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

The main() Method

$ javac Zoo.java

$ java Zoo.java Zoo

ZooException in thread "main"java.lang.ArrayIndexOutOfBoundsException: 1at mainmethod.Zoo.main(Zoo.java:7)

Page 34: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Primitives and Objects

String name = new String(“Bill Zhang”);

Page 35: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Primitives and Objects

String name = new String(“Bill Zhang”);

Page 36: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Primitives and Objects

String name = new String(“Bill Zhang”);

Page 37: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Primitives and Objects

String name = new String(“Bill Zhang”);

Page 38: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Primitives and Objects

String name = new String(“Bill Zhang”);

Page 39: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Primitives and Objects

int number = 5;

Page 40: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Primitives and Objects

int number = 5;

Page 41: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Primitives and Objects

int number = 5;

Page 42: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Primitives and Objects

int number = 5;

Page 43: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Primitives and Objects

boolean byteshortintlongfloatdoublechar

true or false 8-bit integral value16-bit integral value32-bit integral value64-bit integral value32-bit floating point value64-bit floating point value16-bit Unicode value

true123123123123123.45f123.45‘a’

Page 44: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Constructors

public class Chick {private String name = "Fluffy";public Chick() {

name = "Tiny";}public static void main(String[ ] args) {

Chick chick = new Chick();System.out.println(chick.name); } }

Page 45: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Constructors

public class Chick {private String name = "Fluffy";public Chick() {

name = "Tiny";}public static void main(String[ ] args) {

Chick chick = new Chick();System.out.println(chick.name); } }

Page 46: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Constructors

public class Chick {private String name = "Fluffy";public Chick() {

name = "Tiny";}public static void main(String[ ] args) {

Chick chick = new Chick();System.out.println(chick.name); } }

Page 47: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Constructors

public class Chick {private String name = "Fluffy";public Chick() {

name = "Tiny";}public static void main(String[ ] args) {

Chick chick = new Chick();System.out.println(chick.name); } }

Page 48: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Constructors

public class Chick {private String name = "Fluffy";public Chick() {

name = "Tiny";}public static void main(String[ ] args) {

Chick chick = new Chick();System.out.println(chick.name); } }

Page 49: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Constructors

public class Chick {private String name = "Fluffy";public Chick() {

name = "Tiny";}public static void main(String[ ] args) {

Chick chick = new Chick();System.out.println(chick.name); } }

Page 50: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Constructors

public class Chick {private String name = "Fluffy";public Chick() {

name = "Tiny";}public static void main(String[ ] args) {

Chick chick = new Chick();System.out.println(chick.name); } }

Page 51: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Constructors

$ javac Chick.java

$ java Chick

What will this print?

Tiny

Page 52: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Constructorspublic class Chick {

private String name = "Fluffy";public Chick() {

name = "Tiny";}public Chick(String name) {

this.name = name;}public static void main(String[ ] args) {

Chick chick = new Chick(“Cutie”);System.out.println(chick.name); } }

Page 53: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Constructorspublic class Chick {

private String name = "Fluffy";public Chick() {

name = "Tiny";}public Chick(String name) {

this.name = name;}public static void main(String[ ] args) {

Chick chick = new Chick(“Cutie”);System.out.println(chick.name); } }

Page 54: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Constructorspublic class Chick {

private String name = "Fluffy";public Chick() {

name = "Tiny";}public Chick(String name) {

this.name = name;}public static void main(String[ ] args) {

Chick chick = new Chick(“Cutie”);System.out.println(chick.name); } }

Page 55: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Constructorspublic class Chick {

private String name = "Fluffy";public Chick() {

name = "Tiny";}public Chick(String name) {

this.name = name;}public static void main(String[ ] args) {

Chick chick = new Chick(“Cutie”);System.out.println(chick.name); } }

Page 56: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Constructors

$ javac Chick.java

$ java Chick

What will this print?

Cutie

Page 57: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Declarations and Initializations

public class Chick {private String name = "Fluffy";public Chick() {

name = "Tiny";}public static void main(String[ ] args) {

Chick chick = new Chick();System.out.println(chick.name); } }

Page 58: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Declarations and Initializations

public class Chick {private String name = "Fluffy";public Chick() {

name = "Tiny";}public static void main(String[ ] args) {

Chick chick = new Chick();System.out.println(chick.name); } }

Page 59: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Java Statements

if-then Statementif-then-else Statementwhile Statementdo-while Statementfor Statement

Page 60: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Java Statements

if (name == NULL) {System.out.println(“empty”);

}

for (int i = 0; i < 10; i++) {System.out.println( i );

}

Page 61: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Class Design

Page 62: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public class Animal {private int age;public int getAge() {

return age;}

}

public class Tiger {private int age;public int getAge() {

return age;}public void roar() {

System.out.println(“roar”);}

}

Page 63: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public class Animal {private int age;public int getAge() {

return age;}

}

public class Tiger {private int age;public int getAge() {

return age;}public void roar() {

System.out.println(“roar”)}

}

Page 64: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Class Inheritance

● Single inheritance

Page 65: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public class Animal {private int age;public int getAge() {

return age;}

}

public class Tiger extends Animal {public void roar() {

System.out.println(“roar”);}

}

Page 66: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public class Animal {private int age;public int getAge() {

return age;}

}

public class Tiger extends Animal {public void roar() {

System.out.println(“roar”);}

}

Page 67: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public class Animal {private int age;public int getAge() {

return age;}

}

public class Tiger extends Animal {public void roar() {

System.out.println(“roar”);}

public void age() {int tigerAge = getAge();System.out.println(tigerAge);

}}

Page 68: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public class Animal {private int age;public int getAge() {

return age;}

}

public class Tiger extends Animal {public void roar() {

System.out.println(“roar”);}

public void age() {int tigerAge = getAge();System.out.println(tigerAge);

}}

Page 69: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public class Animal {private int age;private String name;public Animal(int age, String name) {

super();this.age = age;this.name = name;

}public Animal(int age) {

this.age = age;this.name = null;

}}

public class Gorilla extends Animal {public Gorilla(int age) {

super(age,"Gorilla");}public Gorilla() {

super(5);}

}

Page 70: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public class Animal {private int age;private String name;public Animal(int age, String name) {

super();this.age = age;this.name = name;

}public Animal(int age) {

this.age = age;this.name = null;

}}

public class Gorilla extends Animal {public Gorilla(int age) {

super(age,"Gorilla");}public Gorilla() {

super(5);}

}

Page 71: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public class Animal {private int age;private String name;public Animal(int age, String name) {

super();this.age = age;this.name = name;

}public Animal(int age) {

this.age = age;this.name = null;

}}

public class Gorilla extends Animal {public Gorilla(int age) {

super(age,"Gorilla");}public Gorilla() {

super(5);}

}

Page 72: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public class Animal {private int age;private String name;public Animal(int age, String name) {

super();this.age = age;this.name = name;

}public Animal(int age) {

this.age = age;this.name = null;

}}

public class Gorilla extends Animal {public Gorilla(int age) {

super(age,"Gorilla");}public Gorilla() {

super(5);}

}

Page 73: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public class Animal {private int age;private String name;public Animal(int age, String name) {

super();this.age = age;this.name = name;

}public Animal(int age) {

this.age = age;this.name = null;

}}

public class Gorilla extends Animal {public Gorilla(int age) {

super(age,"Gorilla");}public Gorilla() {

super(5);}

}

Page 74: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Abstract Classes

Page 75: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public abstract class Animal {protected int age;public void eat() {

System.out.println("Animal is eating");}public abstract String getName();

}

public class Swan extends Animal {public String getName() {

return "Swan";}

}

Page 76: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public abstract class Animal {protected int age;public void eat() {

System.out.println("Animal is eating");}public abstract String getName();

}

public class Swan extends Animal {public String getName() {

return "Swan";}

}

Page 77: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public abstract class Animal {protected int age;public void eat() {

System.out.println("Animal is eating");}public abstract String getName();

}

public class Swan extends Animal {public String getName() {

return "Swan";}

}

Page 78: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public abstract class Animal {protected int age;public void eat() {

System.out.println("Animal is eating");}public abstract String getName();

}

public class Swan extends Animal {public String getName() {

return "Swan";}

}

Page 79: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public abstract class Animal {protected int age;public void eat() {

System.out.println("Animal is eating");}public abstract String getName();

}

public class Swan extends Animal {public int getAge() {

return age;}

}

Page 80: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public abstract class Animal {protected int age;public void eat() {

System.out.println("Animal is eating");}public abstract String getName();

}

public class Swan extends Animal {public int getAge() {

return age;}

}

Page 81: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public abstract class Animal {protected int age;public void eat() {

System.out.println("Animal is eating");}public abstract String getName();

}

public abstract class Swan extends Animal {public int getAge() {

return age;}

}

Page 82: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Interfaces

● Multiple inheritance

Page 83: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public interface HasTail {public abstract int getTailLength();

}

public class Mouse implements HasTail {public int tailLength = 5;public Mouse(int tailLength) {

this.tailLength = tailLength}public int getTailLength() {

return tailLength;}

}

Page 84: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public interface HasTail {public abstract int getTailLength();

}

public class Mouse implements HasTail {public int tailLength = 5;public Mouse(int tailLength) {

this.tailLength = tailLength}public int getTailLength() {

return tailLength;}

}

Page 85: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public interface HasTail {public abstract int getTailLength();

}

public class Mouse implements HasTail {public int tailLength = 5;public Mouse(int tailLength) {

this.tailLength = tailLength}public int getTailLength() {

return tailLength;}

}

Page 86: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public interface HasTail {public abstract int getTailLength();

}

public class Mouse implements HasTail {public int tailLength = 5;public Mouse(int tailLength) {

this.tailLength = tailLength}public int getTailLength() {

return tailLength;}

}

Page 87: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public interface HasTail {public abstract int getTailLength();

}public interface HasWhiskers {

public int getNumberOfWhiskers();}public class Mouse implements HasTail, HasWhiskers {

public int tailLength = 5;public Mouse(int tailLength) {

this.tailLength = tailLength}public int getTailLength() {

return tailLength;}

}

Page 88: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public interface HasTail {public abstract int getTailLength();

}public interface HasWhiskers {

public int getNumberOfWhiskers();}public class Mouse implements HasTail, HasWhiskers {

public int tailLength = 5;public Mouse(int tailLength) {

this.tailLength = tailLength}public int getTailLength() {

return tailLength;}

}

Page 89: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public interface HasTail {public abstract int getTailLength();

}public interface HasWhiskers {

public int getNumberOfWhiskers();}public class Mouse implements HasTail, HasWhiskers {

public int tailLength = 5;public Mouse(int tailLength) {

this.tailLength = tailLength}public int getTailLength() {

return tailLength;}

}

Page 90: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public interface HasTail {public abstract int getTailLength();

}public interface HasWhiskers {

public int getNumberOfWhiskers();}public class Mouse implements HasTail, HasWhiskers {

public int tailLength = 5;public Mouse(int tailLength) {

this.tailLength = tailLength}public int getTailLength() {

return tailLength;}

}

Page 91: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public interface HasTail {public abstract int getTailLength();

}public interface HasWhiskers {

public int getNumberOfWhiskers();}public abstract class Mouse implements HasTail, HasWhiskers {

public int tailLength = 5;public Mouse(int tailLength) {

this.tailLength = tailLength}public int getTailLength() {

return tailLength;}

}

Page 92: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public interface HasTail {public int getTailLength();

}

public interface HasWhiskers {public int getNumberOfWhiskers();

}

public class Mouse implements HasTail, HasWhiskers {public int tailLength = 5;public int numWhiskers = 10;public Mouse(int tailLength) {

this.tailLength = tailLength;}public int getTailLength() {

return tailLength;}public int getNumberOfWhiskers() {

return numWhiskers;}

}

Page 93: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public interface HasTail {public int getTailLength();

}

public interface HasWhiskers {public int getNumberOfWhiskers();

}

public class Mouse implements HasTail, HasWhiskers {public int tailLength = 5;public int numWhiskers = 10;public Mouse(int tailLength, int numWhiskers) {

this.tailLength = tailLength;this.numWhiskers = numWhiskers;

}public Mouse(int tailLength) {

this.tailLength = tailLength;}public int getTailLength() {

return tailLength;}public int getNumberOfWhiskers() {

return numWhiskers;}

}

Page 94: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Methods and Encapsulation

Page 95: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Packages

C:\temp\packagea\ClassA.java

package packagea;public class ClassA {}

C:\temp\packageb\ClassB.java

package packageb;import packagea.ClassA;public class ClassB {

ClassA a;}

Page 96: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Packages

C:\temp\packagea\ClassA.java

package packagea;public class ClassA {}

C:\temp\packageb\ClassB.java

package packageb;import packagea.ClassA;public class ClassB {

ClassA a;}

Page 97: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Packages

C:\temp\packagea\ClassA.java

package packagea;public class ClassA {}

C:\temp\packageb\ClassB.java

package packageb;import packagea.ClassA;public class ClassB {

ClassA a;}

Page 98: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Packages

C:\temp\packagea\ClassA.java

package packagea;public class ClassA {}

C:\temp\packageb\ClassB.java

package packageb;import packagea.ClassA;public class ClassB {

ClassA a;}

Page 99: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Making Methods

public class Animal {String name;public String getName( ) {

return name;}public void setName(String newName) {

name = newName;}

}

Page 100: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Making Methods

public class Animal {String name;public String getName( ) {

return name;}public void setName(String newName) {

name = newName;}

}

Page 101: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Access Modifiers

● private● default (package private)● protected ● public

Page 102: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

A Duck Study

Page 103: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.duck;public class FatherDuck {

private String noise = “quack”;private void quack() {

System.out.println(noise);}private void makeNoise {

quack();}

}

Page 104: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.duck;public class FatherDuck {

private String noise = “quack”;private void quack() {

System.out.println(noise);}private void makeNoise {

quack();}

}

Page 105: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.duck;public class FatherDuck {

private String noise = “quack”;private void quack() {

System.out.println(noise);}private void makeNoise {

quack();}

}

Page 106: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.duck;public class BadDuckling {

public void makeNoise() {FatherDuck duck = new FatherDuck();duck.quack(); System.out.println(duck.noise);

}}

Page 107: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.duck;public class BadDuckling {

public void makeNoise() {FatherDuck duck = new FatherDuck();duck.quack(); System.out.println(duck.noise);

}}

Page 108: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.duck;public class BadDuckling {

public void makeNoise() {FatherDuck duck = new FatherDuck();duck.quack(); System.out.println(duck.noise);

}}

Page 109: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.duck;public class MotherDuck {

String noise = "quack";void quack() {

System.out.println(noise); }private void makeNoise() {

quack(); }

}

Page 110: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.duck;public class MotherDuck {

String noise = "quack";void quack() {

System.out.println(noise); }private void makeNoise() {

quack(); }

}

Page 111: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.duck;public class MotherDuck {

String noise = "quack";void quack() {

System.out.println(noise); }private void makeNoise() {

quack(); }

}

Page 112: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.duck;public class GoodDuckling {

public void makeNoise() {MotherDuck duck = new MotherDuck();duck.quack();System.out.println(duck.noise);

}}

Page 113: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.duck;public class GoodDuckling {

public void makeNoise() {MotherDuck duck = new MotherDuck();duck.quack();System.out.println(duck.noise);

}}

Page 114: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.swan;import pond.duck.MotherDuck;public class BadCygnet {

public void makeNoise() {MotherDuck duck = new MotherDuck();duck.quack();System.out.println(duck.noise);

}}

Page 115: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.swan;import pond.duck.MotherDuck;public class BadCygnet {

public void makeNoise() {MotherDuck duck = new MotherDuck();duck.quack();System.out.println(duck.noise);

}}

Page 116: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Protected Access

Page 117: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.shore;public class Bird {

protected String text = "floating";protected void floatInWater() {

System.out.println(text);}

}

Page 118: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.shore;public class Bird {

protected String text = "floating";protected void floatInWater() {

System.out.println(text);}

}

Page 119: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.shore;public class Bird {

protected String text = "floating";protected void floatInWater() {

System.out.println(text);}

}

Page 120: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.goose;import pond.shore.Bird; public class Gosling extends Bird {

public void swim() {floatInWater();System.out.println(text);

}}

Page 121: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.goose;import pond.shore.Bird; public class Gosling extends Bird {

public void swim() {floatInWater();System.out.println(text);

}}

Page 122: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.goose;import pond.shore.Bird; public class Gosling extends Bird {

public void swim() {floatInWater();System.out.println(text);

}}

Page 123: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.goose;import pond.shore.Bird; public class Gosling extends Bird {

public void swim() {floatInWater();System.out.println(text);

}}

Page 124: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.shore; public class BirdWatcher {

public void watchBird() {Bird bird = new Bird();bird.floatInWater();System.out.println(bird.text);

}}

Page 125: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.shore; public class BirdWatcher {

public void watchBird() {Bird bird = new Bird();bird.floatInWater();System.out.println(bird.text);

}}

Page 126: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.shore; public class BirdWatcher {

public void watchBird() {Bird bird = new Bird();bird.floatInWater();System.out.println(bird.text);

}}

Page 127: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.inland;import pond.shore.Bird; public class BirdWatcherFromAfar {

public void watchBird() {Bird bird = new Bird();bird.floatInWater();System.out.println(bird.text);

}}

Page 128: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.inland;import pond.shore.Bird; public class BirdWatcherFromAfar {

public void watchBird() {Bird bird = new Bird();bird.floatInWater();System.out.println(bird.text);

}}

Page 129: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.inland;import pond.shore.Bird; public class BirdWatcherFromAfar {

public void watchBird() {Bird bird = new Bird();bird.floatInWater();System.out.println(bird.text);

}}

Page 130: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

package pond.inland;import pond.shore.Bird; public class BirdWatcherFromAfar {

public void watchBird() {Bird bird = new Bird();bird.floatInWater();System.out.println(bird.text);

}}

Page 131: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public class Animal {private int age;public int getAge() {

return age;}

}

public class Tiger extends Animal {public void roar() {

System.out.println(“roar”);}

public void age() {System.out.println(age);

}}

Page 132: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

public class Animal {private int age;public int getAge() {

return age;}

}

public class Tiger extends Animal {public void roar() {

System.out.println(“roar”);}

public void age() {System.out.println(age);

}}

Page 133: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

WHY?

Page 134: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9
Page 135: Java SE 8 Programming Basicscdn.cs50.net/2017/fall/seminars/java/java.pdf · Object-oriented programming language Runs on Java Virtual Machine Java SE 8 released in 2014 Java SE 9

Thanks for Watching!Contact: [email protected]